SLAM 자체 위치 추정, 자동 이동
11805 단어 ROS
URG를 통한 센서 데이터 수집 및 시각화
WHILL Auto Project(잠정)의 2탄.
현재 필요한 외부 포장과 launch 파일은 아래에서 얻을 수 있습니다.
https://github.com/nobunoby/WHILL_Auto
저번 보도
package installation
참조: https://blog.browniealice.net/post/how_to_use_urg/
rviz에 urg scan 그리기
우선 urg의 직렬 포트를 가져옵니다.$ dmesg | grep tty
ubuntu@ubuntu:~/catkin_ws$ dmesg | grep tty
[ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=0 bcm2708_fb.fbheight=0 bcm2708_fb.fbswap=1 smsc95xx.macaddr=DC:A6:32:84:C3:C1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 net.ifnames=0 dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc
[ 0.000630] printk: console [tty1] enabled
[ 2.860450] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 14, base_baud = 0) is a PL011 rev2
[ 2.865215] printk: console [ttyS0] disabled
[ 2.865257] fe215040.serial: ttyS0 at MMIO 0x0 (irq = 16, base_baud = 62500000) is a 16550
[ 3.136632] printk: console [ttyS0] enabled
[ 14.150074] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 14.207231] usb 1-1.1: pl2303 converter now attached to ttyUSB0
[ 2534.856364] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 2590.927209] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 2665.406105] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 4263.617155] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 4305.274690] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
[ 4312.242110] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
[ 4316.743410] usb 1-1.2: pl2303 converter now attached to ttyUSB0
tty ACM0을 알았으니까.
raspirosrun urg_node urg_node _serial_port:="/dev/ttyACM0"
raspirosrun tf static_transform_publisher 0 0 0 0 0 0 world map 100 &
rosrun tf static_transform_publisher 0 0 1 -0.2 0 0 map laser 100 &
SLAM
Gmapping
참조:
매개 변수 설명
관영 위키
rviz에서 그림을 볼 수 있습니다
pcrosrun gmapping slam_gmapping
raspirosrun urg_node urg_node _serial_port:="/dev/ttyACM0" &
rosrun tf static_transform_publisher 0 0 1 -0.2 0 0 base_link scan 100 &
rosrun tf static_transform_publisher 0 0 0 0 0 0 world map 100 &
rosrun tf static_transform_publisher 0 0 0 3.1416 0 0 map odom 100 &
rosrun tf static_transform_publisher 0 0 1 0 0 0 base_link laser 100 &
생성된 지도
amcl를 통해 자기 위치 추측
참조:
ROS 탐색amcl 이해 향상
launch 파일 만들기
whill_teleop.launch<?xml version="1.0"?>
<launch>
<arg name="make_map" default="false"/>
<node name="joy" pkg="joy" type="joy_node" output="log">
</node>
<node name="joy_twist" pkg="teleop_twist_joy" type="teleop_node" output="log">
<remap from="/cmd_vel" to="/whill/controller/cmd_vel" />
</node>
<node pkg="tf" type="static_transform_publisher" name="tf_base_scan" args="0 0 1 -0.2 0 0 base_link scan 100" />
<node pkg="tf" type="static_transform_publisher" name="tf_map_odom" args="0 0 0 0 0 0 map odom 100" />
<node pkg="tf" type="static_transform_publisher" name="tf_base_laser" args="0 0 1 0 0 0 base_link laser 100" />
<group if="$(arg make_map)">
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="log">
<param name="srr" value="0.01"/>
<param name="srt" value="0.02"/>
<param name="str" value="0.01"/>
<param name="stt" value="0.02"/>
<param name="linearUpdate" value="0.5"/>
<param name="angularUpdate" value="0.436"/>
</node>
</group>
<group unless="$(arg make_map)">
<include file="$(find whill_launch)/launch/amcl.launch" >
</include>
</group>
<group unless="$(arg make_map)">
<node name="map_server" pkg="map_server" type="map_server" args="$(find whill_launch)/maps/srg_203.yaml"/>
</group>
</launch>
pcroslaunch whill_launch whill_teleop.launch
raspirosrun urg_node urg_node _serial_port:="/dev/ttyACM0" &
roslaunch ros_whill ros_whill.launch
DS4에서 적당히 운동할 때의 자기 위치를 추측하는 경우
move_베이스로 자율 이동
참고 자료
move_base 설정 파일 등
비디오 Stack의 매개 변수
http://wiki.ros.org/move_base
http://wiki.ros.org/costmap_2d
raspirosrun urg_node urg_node _serial_port:="/dev/ttyACM0" &
roslaunch ros_whill ros_whill.launch &
pcroslaunch whill_launch whill_auto.launch
노드, 화제는 이런 느낌
move_베이스와teleop의 우선순위
move_베이스에서 고알을 주고 DS4의 □ 버튼을 누르면 WHLL이 멈춘다.손가락을 놓고 또 움직였다.
후투가 강합니까
Reference
이 문제에 관하여(SLAM 자체 위치 추정, 자동 이동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/noby_aoao/items/9d1734e80ae7f31f965d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ dmesg | grep tty
ubuntu@ubuntu:~/catkin_ws$ dmesg | grep tty
[ 0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=0 bcm2708_fb.fbheight=0 bcm2708_fb.fbswap=1 smsc95xx.macaddr=DC:A6:32:84:C3:C1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000 net.ifnames=0 dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait fixrtc
[ 0.000630] printk: console [tty1] enabled
[ 2.860450] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 14, base_baud = 0) is a PL011 rev2
[ 2.865215] printk: console [ttyS0] disabled
[ 2.865257] fe215040.serial: ttyS0 at MMIO 0x0 (irq = 16, base_baud = 62500000) is a 16550
[ 3.136632] printk: console [ttyS0] enabled
[ 14.150074] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 14.207231] usb 1-1.1: pl2303 converter now attached to ttyUSB0
[ 2534.856364] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 2590.927209] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 2665.406105] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 4263.617155] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device
[ 4305.274690] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
[ 4312.242110] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
[ 4316.743410] usb 1-1.2: pl2303 converter now attached to ttyUSB0
rosrun urg_node urg_node _serial_port:="/dev/ttyACM0"
rosrun tf static_transform_publisher 0 0 0 0 0 0 world map 100 &
rosrun tf static_transform_publisher 0 0 1 -0.2 0 0 map laser 100 &
rosrun gmapping slam_gmapping
rosrun urg_node urg_node _serial_port:="/dev/ttyACM0" &
rosrun tf static_transform_publisher 0 0 1 -0.2 0 0 base_link scan 100 &
rosrun tf static_transform_publisher 0 0 0 0 0 0 world map 100 &
rosrun tf static_transform_publisher 0 0 0 3.1416 0 0 map odom 100 &
rosrun tf static_transform_publisher 0 0 1 0 0 0 base_link laser 100 &
<?xml version="1.0"?>
<launch>
<arg name="make_map" default="false"/>
<node name="joy" pkg="joy" type="joy_node" output="log">
</node>
<node name="joy_twist" pkg="teleop_twist_joy" type="teleop_node" output="log">
<remap from="/cmd_vel" to="/whill/controller/cmd_vel" />
</node>
<node pkg="tf" type="static_transform_publisher" name="tf_base_scan" args="0 0 1 -0.2 0 0 base_link scan 100" />
<node pkg="tf" type="static_transform_publisher" name="tf_map_odom" args="0 0 0 0 0 0 map odom 100" />
<node pkg="tf" type="static_transform_publisher" name="tf_base_laser" args="0 0 1 0 0 0 base_link laser 100" />
<group if="$(arg make_map)">
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="log">
<param name="srr" value="0.01"/>
<param name="srt" value="0.02"/>
<param name="str" value="0.01"/>
<param name="stt" value="0.02"/>
<param name="linearUpdate" value="0.5"/>
<param name="angularUpdate" value="0.436"/>
</node>
</group>
<group unless="$(arg make_map)">
<include file="$(find whill_launch)/launch/amcl.launch" >
</include>
</group>
<group unless="$(arg make_map)">
<node name="map_server" pkg="map_server" type="map_server" args="$(find whill_launch)/maps/srg_203.yaml"/>
</group>
</launch>
roslaunch whill_launch whill_teleop.launch
rosrun urg_node urg_node _serial_port:="/dev/ttyACM0" &
roslaunch ros_whill ros_whill.launch
rosrun urg_node urg_node _serial_port:="/dev/ttyACM0" &
roslaunch ros_whill ros_whill.launch &
roslaunch whill_launch whill_auto.launch
Reference
이 문제에 관하여(SLAM 자체 위치 추정, 자동 이동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/noby_aoao/items/9d1734e80ae7f31f965d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)