オジリナルの自律移動ロボット(AMR)を起動します。

自律移動ロボット(AMR)実機(現実のロボット)の製作

自律移動ロボットのサイズと重量は、幅360mm、長さ460mm、高さ329mm、重量約17kgです。
鉛蓄電池を使ったのでやや重くなっています。

車輪径は、直径17センチ(0.17m)です。(他のサイズにも変更可能です)。

車輪の中にモータが内蔵されている、「ハブモータ(インホイールモータ)」を使用しています。
ハブモータの採用により、部品点数が少なくなり、組み立てやメインテナンスが容易になります。
モータには、ブラシの摩耗による性能劣化の心配がない、ブラシレスDCモータが使われています。

また、車輪の中には、車輪の回転量が取得できるようにエンコーダが内蔵されています。
ナビゲーションの精度を上げるには、車輪の回転量から計算するロボットの位置(オドメトリ)が必要になります。
モータ2個と、モータ2個を同時に駆動できるモータドライバ1個でセットになっています。

製作した自律移動ロボット(AMR)(左前方)

製作した自律移動ロボット(AMR)(右後方)

自律移動ロボット(AMR)実機(現実のロボット)の起動

自律移動ロボットのPCとモータドライバの間は、USB-RS485変換器を介して接続されています。

自律移動ロボットのシステム構成

モータドライバと通信するROS2のプログラム(zlac_driver)を新規に作成しました。

このプログラムを起動する前に、モータ用電源スイッチをONにして、モータドライバに電源を供給動しておきます。

ros2 run zlac_driver zlac_driver

USBデバイスの権限を変更します(初回のみ)。

sudo chmod 666 /dev/ttyUSB0

ユーザー(例sakamoto)をdialoutグループに加えます(初回のみ)。

sudo usermod -a -G dialout sakamoto

キーボードで自律移動ロボット実機を操縦する場合は、次を実行します。

ros2 run teleop_twist_keyboard teleop_twist_keyboard

ジョイパッドで自律移動ロボット実機を操縦する場合は、次を実行します。

ros2 launch teleop_joy teleop_joy.launch.py

 

自律移動ロボット実機を操縦するときのプログラムのつながりを表示してみます。

ros2 run rqt_graph rqt_graph

LiDARの起動

LIDARを起動します。

以下は、RPLiDARの例です。

ros2 launch rplidar_ros rplidar.launch.py

rplidar.launch.py

from launch import LaunchDescription
from launch_ros.actions import Node


def generate_launch_description():
  return LaunchDescription([
    Node(
      name='rplidar_composition',
      package='rplidar_ros',
      executable='rplidar_composition',
      output='screen',
      parameters=[{
#        'serial_port': '/dev/ttyUSB0',
        'serial_port': '/dev/rplidar',
        'serial_baudrate': 115200,  # A1 / A2
        # 'serial_baudrate': 256000, # A3
#        'frame_id': 'laser',
        'frame_id': 'base_scan',  # sakamoto
        'inverted': False,
        'angle_compensate': True,
      }],
    ),
  ])

frame_idは、URDFファイルのLiDARのリンク名に変更する。

使用したRPLiDAR A1は、USB接続である。他のデバイス名と区別するため、デバイス名を/dev/rplidarで使えるように以下のように実行しておく。初回の一度だけでよい。

create_udev_rules.sh

#!/bin/bash

echo "remap the device serial port(ttyUSBX) to  rplidar"
echo "rplidar usb connection as /dev/rplidar , check it using the command : ls -l /dev|grep ttyUSB"
echo "start copy rplidar.rules to  /etc/udev/rules.d/"
echo "`rospack find rplidar_ros`/scripts/rplidar.rules"
sudo cp `rospack find rplidar_ros`/scripts/rplidar.rules  /etc/udev/rules.d
echo " "
echo "Restarting udev"
echo ""
sudo service udev reload
sudo service udev restart
echo "finish "
RPLiDARの他には、LiDARとしては、北陽電機(HOKUYO)製のものが有名でよく使われます。