ラズパイにUbuntuがクリーンインストールされている前提で説明します.
ROS 公式のインストールガイドに従って,ROS 2 Humbleをインストールします.
まず,Ubuntu Universe リポジトリが有効になっていることを確認します.
sudo apt install -y software-properties-common
sudo add-apt-repository universeROS 2 Humbleをインストールします.
sudo apt update && sudo apt -y install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
sudo apt install -y ros-humble-desktop
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt install -y python3-colcon-common-extensions python3-pipワークスペースを作成します.
mkdir -p ~/topoquad_ws/src
cd ~/topoquad_ws && colcon build --symlink-install && . install/setup.bashワークスペースを設定します.
echo '. ~/topoquad_ws/install/setup.bash' >> ~/.bashrc
source ~/.bashrccd ~/topoquad_ws/src
git clone --recursive git@github.com:fuzzrobo/ToPoQuad.git -b humble-devel
cd ~/topoquad_ws && colcon build --symlink-install && source install/setup.bash$ git clone ...でエラーが出る場合は,以下を実行して git をインストールしてください.
sudo apt update
sudo apt install -y gitインストールが完了したら,再度上記の git clone 以降のコマンドを実行してください.
wget https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/99-opencr-cdc.rules
sudo cp ./99-opencr-cdc.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
rm ./99-opencr-cdc.rulesOpenCRをにファームウェアを書き込み,dynamixelとの通信とOpenCR内のIMUデータをRaspberry Piに送信できるようにします.
Arduino IDEを用いて,topoquad_master/opencr/usb_topdxl_imu/usb_to_imu.inoをOpenCRボードに書き込みます.
Arduino IDEのインストール方法やOpenCRのセットアップ方法については,以下を参照してください.
Open CR v1.0 公式サイト
Raspberry Piをホストとして,ssh接続できるように設定します.
sudo apt update
sudo apt install -y openssh-server
sudo reboot再起動後,以下のコマンドでraspberry piのIPアドレスを確認し,メモします.
hostname -Iロボットを完全自律で動かす場合を除き、リモートPC側にもROS 2環境やドライバをインストールする必要があります。
ROS 2 がインストールされている前提で説明します.
ワークスペースを作成します.
mkdir -p ~/topoquad_ws/src
cd ~/topoquad_ws && colcon build --symlink-install && . install/setup.bashワークスペースを設定します.
echo '. ~/topoquad_ws/install/setup.bash' >> ~/.bashrc
source ~/.bashrcROS 2 がインストールされていない場合は 1.2. ROS 2 Humble のインストールと同様に導入してください.
ROS 公式のインストールガイドに従って,ROS 2 Humbleをインストールします. まず,Ubuntu Universe リポジトリが有効になっていることを確認します.sudo apt install -y software-properties-common
sudo add-apt-repository universeROS 2 Humbleをインストールします.
sudo apt update && sudo apt -y install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
sudo apt install -y ros-humble-desktop
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt install -y python3-colcon-common-extensions python3-pipワークスペースを作成します.
mkdir -p ~/topoquad_ws/src
cd ~/topoquad_ws && colcon build --symlink-install && . install/setup.bashワークスペースを設定します.
echo '. ~/topoquad_ws/install/setup.bash' >> ~/.bashrc
source ~/.bashrccd ~/topoquad_ws/src
git clone --recursive git@github.com:fuzzrobo/ToPoQuad.git -b humble-devel
cd ~/topoquad_ws && colcon build --symlink-install && source install/setup.bash$ git clone ...でエラーが出る場合は,以下を実行して git をインストールしてください.
sudo apt update
sudo apt install -y gitインストールが完了したら,再度上記の git clone 以降のコマンドを実行してください.
sudo apt install ros-humble-plotjuggler
sudo apt install ros-humble-plotjuggler-ros
sudo apt install ros-humble-teleop-twist-keyboard 1.6. SSH接続の設定で確認したRaspberry PiのIPアドレスを用いて,以下のコマンドでssh接続できることを確認します.
ssh your_username@<Raspberry_PiのIPアドレス>RasPiにssh接続して以下のコマンドを実行
ros2 launch topoquad_bringup hardware.launch.pyRasPiにssh接続して以下のコマンドを実行
# 新しいターミナルで実行
ros2 launch topoquad_control sample_walk.launch.py- コントローラで動かす場合
ros2 launch topoquad_control teleop_joy_ps4.launch.py- キーボードで動かす場合 リモートPCで以下のコマンドをそれぞれ別のターミナルで実行
# 新しいターミナルで実行
ros2 run topoquad_control twist_node --ros-args --remap __ns:=/topoquad# 新しいターミナルで実行
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args --remap __ns:=/topoquad2つ目のターミナルにカーソルを合わせた状態で適切なキーを押せばロボットが動く
リモートPCで以下のコマンドを実行
# 新しいターミナルで実行
ros2 run plotjuggler plotjuggler -l ~/topoquad_ws/src/ToPoQuad/plot_config.xml出てくるウィンドウでyesを選択。
Select ROS message という window では /topoquad/legs/command, /topoquad/legs/state/goal, /topoquad/legs/state/present, の3つを選択してOK.
topoquad_masterパッケージ内のソースコードを編集する必要があります.
例えば足に用いるXC330についてであれば,/topoquad_master/src/leg_node.cpp の以下の領域にある,dynamixel_handler_msgs::msg::DxlCommandsX dyn_msg の各フィールドを修正することで設定の変更が可能です.
void main_loop(){
auto now = this->get_clock()->now();
if (now.seconds() - prev_cmd_time_.seconds() < 0.2) return;
dynamixel_handler_msgs::msg::DxlCommandsX dyn_msg;
for (auto& leg : {ref(goal_leg_fr_), ref(goal_leg_fl_), ref(goal_leg_br_), ref(goal_leg_bl_)}) {
// ... 略 ...
dyn_msg.status.id_list.push_back( leg.get().hip_yaw_.id_);
dyn_msg.status.id_list.push_back( leg.get().hip_pitch_.id_);
dyn_msg.status.id_list.push_back( leg.get().knee_pitch_.id_);
dyn_msg.status.error.push_back( false );
dyn_msg.status.error.push_back( false );
dyn_msg.status.error.push_back( false );
}
dyn_cmd_pub_->publish(dyn_msg);
}詳細な使い方は,dynamixel_handler_msgs の msg 定義を参照してください.
始めに,Raspberry Pi 内の /topoquad_master/config/dynamixel_unify_baudrate.yaml の target_baudrate を変更します.
/**:
ros__parameters:
# 指定可能なボーレート
# 9600
# 57600
# 115200
# 1000000
# 2000000
# 3000000
# 4000000
# 通信機器の設定
device_name: /dev/ttyACM0 # 通信するデバイス名
target_baudrate: 1000000 # 通信速度
latency_timer: 1 # 通信のインターバル
# 探索するサーボの設定
min_id: 0
max_id: 40
min_search_baudrate: 57600
max_search_baudrate: 4000000保存した後,Raspberry Pi で以下を実行します..
ros2 launch topoquad_master dynamixel_unify_baudrate.launch.py接続しているすべてのDynamixelを探索し,ボーレートを統一します.