-
 

raspimouse_ros2_examples package from raspimouse_ros2_examples repo

raspimouse_ros2_examples

Package Summary

Tags No category tags.
Version 2.2.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/rt-net/raspimouse_ros2_examples.git
VCS Type git
VCS Version humble-devel
Last Updated 2024-08-28
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Raspberry Pi Mouse examples

Additional Links

No additional links.

Maintainers

  • RT Corporation

Authors

  • ShotaAk
  • Daisuke Sato
  • Shuhei Kozasa
English 日本語

raspimouse_ros2_examples

industrial_ci

Raspberry Pi MouseのROS 2サンプルコード集です。

ROS1のサンプルコード集はこちら

Gazebo(シミュレータ)でも動作します。詳細はこちら

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/raspberry_pi_mouse.JPG width=500 />

Supported ROS 2 distributions

  • Foxy
  • Humble (This branch)

Requirements

  • Raspberry Pi Mouse
    • https://rt-net.jp/products/raspberrypimousev3/
    • Linux OS
      • Ubuntu server 22.04
      • https://ubuntu.com/download/raspberry-pi
    • Device Driver
    • ROS
    • Raspberry Pi Mouse ROS 2 package
      • https://github.com/rt-net/raspimouse2
  • Remote Computer (Optional)
    • ROS
    • Raspberry Pi Mouse ROS 2 package
      • https://github.com/rt-net/raspimouse2

Installation

$ cd ~/ros2_ws/src
# Clone package
$ git clone -b $ROS_DISTRO-devel https://github.com/rt-net/raspimouse_ros2_examples.git

# Install dependencies
$ rosdep install -r -y --from-paths . --ignore-src

# Build & Install
$ cd ~/ros2_ws
$ colcon build --symlink-install
$ source ~/ros2_ws/install/setup.bash

License

このリポジトリはApache 2.0ライセンスの元、公開されています。 ライセンスについてはLICENSEを参照ください。

How To Use Examples


joystick_control

ジョイスティックコントローラでRaspberryPiMouseを動かすコード例です。

Requirements

How to use

次のコマンドでノードを起動します。

# Use F710
$ ros2 launch raspimouse_ros2_examples teleop_joy.launch.py joydev:="/dev/input/js0" joyconfig:=f710 mouse:=true

# Use DUALSHOCK 3
$ ros2 launch raspimouse_ros2_examples teleop_joy.launch.py joydev:="/dev/input/js0" joyconfig:=dualshock3 mouse:=true

# Control from remote computer
## on RaspberryPiMouse
$ ros2 run raspimouse raspimouse
## on remote computer
$ ros2 launch raspimouse_ros2_examples teleop_joy.launch.py mouse:=false

デフォルトのキー割り当てはこちらです。

Logicool Wireless Gamepad F710を使う場合はモード切替スイッチを D (DirectInput Mode)に設定します。

Configure

./config/joy_f710.yml./config/joy_dualshock3.yml のキー番号を編集することで、キー割り当てを変更できます。

button_shutdown_1       : 8
button_shutdown_2       : 9

button_motor_off        : 8
button_motor_on         : 9

button_cmd_enable       : 4

Videos

joystick_control

back to example list


object_tracking

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/object_tracking.JPG width=500 />

色情報をもとにオレンジ色のボールの追跡を行うコード例です。 USB接続のWebカメラとOpenCVを使ってボール追跡をします。

Requirements

Installation

Raspberry Pi Mouseにカメラマウントを取り付け、WebカメラをRaspberry Piに接続します。

How to use

次のスクリプトを実行して、カメラの自動調節機能(自動露光,オートホワイトバランス等)を切ります。

$ cd ~/ros2_ws/src/raspimouse_ros2_examples/config
$ ./configure_camera.bash

次のコマンドでノードを起動します。

$ ros2 launch raspimouse_ros2_examples object_tracking.launch.py video_device:=/dev/video0

カメラ画像はcamera/color/image_raw、物体検出画像はresult_imageというトピックとして発行されます。 これらの画像はRVizrqt_image_view で表示できます。

画像を表示するとノードの動作が不安定になり、cmd_velや画像トピックが発行されないことがあります。

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/object_tracking_ros2.png width=500 />

Configure

追跡対象の色を変更するには ./src/object_tracking_component.cpp を編集します。

物体検出精度が悪い時にはカメラの露光や関数内のパラメータを調整して下さい。

void Tracker::tracking(const cv::Mat & input_frame, cv::Mat & result_frame)
{
  cv::inRange(hsv, cv::Scalar(9, 100, 100), cv::Scalar(29, 255, 255), extracted_bin);  // Orange
  // cv::inRange(hsv, cv::Scalar(60, 100, 100), cv::Scalar(80, 255, 255), extracted_bin);  // Green
  // cv::inRange(hsv, cv::Scalar(100, 100, 100), cv::Scalar(120, 255, 255), extracted_bin);  // Blue

Videos

object_tracking

back to example list


line_follower

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/mouse_with_line_trace_sensor.JPG width=500 />

ライントレースのコード例です。

Requirements

Installation

Raspberry Pi Mouseにライントレースセンサを取り付けます。

How to use

次のコマンドでノードを起動します。

$ ros2 launch raspimouse_ros2_examples line_follower.launch.py

Raspberry Pi Mouseをフィールドに置き、SW2を押してフィールド上のセンサ値をサンプリングします。

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/field_calibration.JPG width=500 />

次に、センサとラインが重なるようにRaspberry Pi Mouseを置き、SW1を押してライン上のセンサ値をサンプリングします。

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/line_calibration.JPG width=500 />

最後に、ライン上にRaspberry Pi Mouseを置き、SW0を押してライントレースを開始します。

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/start_trace.JPG width=500 />

もう一度SW0を押すとライントレースを停止します。

Configure

走行速度を変更するには./src/line_follower_component.cppを編集します。

void Follower::publish_cmdvel_for_line_following(void)
{
  const double VEL_LINEAR_X = 0.08;  // m/s
  const double VEL_ANGULAR_Z = 0.8;  // rad/s
  const double LOW_VEL_ANGULAR_Z = 0.5;  // rad/s

Videos

line_follower

back to example list


camera_line_follower

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/mouse_camera_line_trace_2.png width=500 />

RGBカメラによるライントレースのコード例です。

Requirements

Installation

Raspberry Pi Mouseにカメラマウントを取り付け、WebカメラをRaspberry Piに接続します。

How to use

次のコマンドでノードを起動します。

$ ros2 launch raspimouse_ros2_examples camera_line_follower.launch.py video_device:=/dev/video0

ライン上にRaspberry Pi Mouseを置き、SW2を押してライントレースを開始します。 停止させる場合はSW0を押します。

カメラ画像はcamera/color/image_raw、物体検出画像はresult_imageというトピックとして発行されます。 これらの画像はRVizrqt_image_view で表示できます。

画像を表示するとノードの動作が不安定になり、cmd_velや画像トピックが発行されないことがあります。

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/camera_line_trace.png width=500 />

Parameters

  • max_brightness
    • Type: int
    • Default: 90
    • 画像の2値化のしきい値の最大値
  • min_brightness
    • Type: int
    • Default: 0
    • 画像の2値化のしきい値の最小値
  • max_linear_vel
    • Type: double
    • Default: 0.05
    • 直進速度の最大値
  • max_angular_vel
    • Type: double
    • Default: 0.8
    • 旋回速度の最大値
  • area_threthold
    • Type: double
    • Default: 0.20
    • 走行を開始するためのライン面積のしきい値
ros2 param set /camera_follower max_brightness 80

back to example list


SLAM

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/slam_toolbox_ros2.png width=500 />

Raspberry Pi MouseでSLAMとNavigationを行うサンプルはrt-net/raspimouse_slam_navigation_ros2へ移行しました。

back to example list


direction_controller

<img src=https://www.rt-net.jp/wp-content/uploads/2018/02/img-usb9s_01.png width=500 />

IMUセンサを使用した角度制御のコード例です。

Requirements

Installation

LiDAR MountにIMUセンサモジュールを取り付けます。

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/mouse_with_imu_2.JPG width=500 />

Raspberry Pi Mouse にLiDAR Mountを取り付けます。

<img src=https://rt-net.github.io/images/raspberry-pi-mouse/mouse_with_imu_1.JPG width=500 />

How to use

次のコマンドでノードを起動します。

$ ros2 launch raspimouse_ros2_examples direction_controller.launch.py

SW0 ~ SW2を押して動作モードを切り替えます。

  • SW0: ジャイロセンサのバイアスをキャリブレーションし、ラズパイマウスの方位角を0 radにリセットします
  • SW1: 方位角を0 radに維持する角度制御を開始します
    • SW0 ~ SW2を押すか、ラズパイマウス本体を横に傾けると終了します
  • SW2: 方位角を-π ~ π radに変化させる角度制御を開始します
    • SW0 ~ SW2を押すか、ラズパイマウス本体を横に傾けると終了します

Troubleshooting

IMUの接続が正常に行われない場合があります。
その時は、IMUのUSBケーブルを抜き差ししてください。
抜き差し実施後は、コマンドを再度実行してください。

Configure

パラメータで角度制御に使うPIDゲインを変更できます。

$ ros2 param set /direction_controller p_gain 10.0
Set parameter successful

$ ros2 param set /direction_controller i_gain 0.5
Set parameter successful

$ ros2 param set /direction_controller d_gain 0.0
Set parameter successful

Parameters

  • p_gain
    • Proportional gain of a PID controller for the direction control
    • default: 10.0, min:0.0, max:30.0
    • type: double
  • i_gain
    • Integral gain of a PID controller for the direction control
    • default: 0.0, min:0.0, max:5.0
    • type: double
  • d_gain
    • Derivative gain of a PID controller for the direction control
    • default: 20.0, min:0.0, max:30.0
    • type: double
  • target_angle
    • Target angle for the SW1 control mode.
    • default: 0.0, min:-π, max:+π
    • type: double

Publish topics

  • heading_angle
    • Heading angle of the robot that calculated from the IMU module sensor values.
    • type: std_msgs/Float64

Videos

back to example list

CHANGELOG

Changelog for package raspimouse_ros2_examples

2.2.1 (2024-08-28)

  • サービスクライアントでexecutorを使用しない (#59)
  • SubscriberとService Clientに別々のcallback_groupを設定 (#58)
  • Contributors: ShotaAk, YusukeKato

2.2.0 (2024-03-05)

  • READMEにSLAM&Navigationパッケージの案内を追加 (#53)
  • Camera_FollowerクラスをCameraFollowerに変更 (#52)
  • Update camera line follower: Set motor power with switch input. Add area_threthold param. (#51)
  • Add velocity parameters for camera_line_follower (#50)
  • カメラライントレースを修正 (#49)
  • Change threthold of line detection
  • Add usb_cam dependency (#48)
  • RGBカメラによるライントレースの実装 (#47)
  • リリースのためにCHANGELOG.rstとpackage.xmlを更新 (#45)
  • Contributors: Shota Aoki, ShotaAk, YusukeKato

2.1.0 (2023-11-07)

  • READMEにGazeboでも実行できることを追記 (#44)
  • object_trackingにおいて画像トピックをサブスクライブするように変更 (#43)
  • Contributors: YusukeKato

2.0.0 (2023-08-03)

  • Humble対応 (#41)
  • Contributors: Shuhei Kozasa

1.0.0 (2022-07-28)

  • Update map command (#38)
  • Adds config file for DUALSHOCK4 (#36)
  • Update README for foxy-devel (#34)
  • Remove node_ prefix from launch files (#33)
  • Use ament_export_targets instead of ament_export_interfaces. (#31)
  • Remove dashing check from CI (#32)
  • Update rviz config to show scan and graph topics (#29)
  • Add descriptions to READMEs for use_pulse_counters param settings (#28)
  • Use joy_linux instead of joy (#27)
  • Update CI to support ROS Foxy (#26)
  • Update package.xml (#25)
  • Install raspimouse2 and imu packages via rosdep command (#22)
  • Add rt_usb_9axisimu_driver dependency to package.xml (#21)
  • Add direction control example (#18)
  • Use images of rt-net/images repo. (#17)
  • Add lidar example (#14)
  • Turn on/off leds with joy inputs (#15)
  • Update Gamepad F710 usage in README (#13)
  • Use multi threads in the object tracking example to stabilize the tracking (#11)
  • update video link (#12)
  • Merge teleop_joy launch files into one file. (#10)
  • Add line follower examples (#9)
  • Add object tracking sample (#8)
  • Rename launch files (#7)
  • Refactoring (#6)
  • Support remote control (#5)
  • Add Joystic example (#4)
  • Add industrial_ci test settings (#3)
  • Fix teleop.launch for flake8 check (#2)
  • Add github workflow (#1)
  • Contributors: Daisuke Sato, Shota Aoki, Shuhei Kozasa

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged raspimouse_ros2_examples at Robotics Stack Exchange