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을 알았으니까.
raspi
rosrun urg_node urg_node _serial_port:="/dev/ttyACM0"
raspi
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 &

SLAM


Gmapping


참조:
매개 변수 설명
관영 위키
rviz에서 그림을 볼 수 있습니다
pc
rosrun gmapping slam_gmapping
raspi
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 &
생성된 지도

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>
pc
roslaunch whill_launch whill_teleop.launch 
raspi
rosrun 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
raspi
rosrun urg_node urg_node _serial_port:="/dev/ttyACM0" &
roslaunch ros_whill ros_whill.launch &
pc
roslaunch whill_launch whill_auto.launch 
노드, 화제는 이런 느낌

move_베이스와teleop의 우선순위


move_베이스에서 고알을 주고 DS4의 □ 버튼을 누르면 WHLL이 멈춘다.손가락을 놓고 또 움직였다.
후투가 강합니까

좋은 웹페이지 즐겨찾기