├── .github └── workflows │ ├── .ci.rosinstall │ └── industrial_ci.yml ├── .gitignore ├── LICENSE ├── README.en.md ├── README.md ├── raspimouse_fake ├── CHANGELOG.rst ├── CMakeLists.txt ├── include │ └── raspimouse_fake │ │ ├── fake_raspimouse_component.hpp │ │ └── visibility_control.hpp ├── misc │ └── ms_sound.wav ├── package.xml └── src │ └── fake_raspimouse_component.cpp ├── raspimouse_gazebo ├── CHANGELOG.rst ├── CMakeLists.txt ├── config │ ├── config.rviz │ └── raspimouse_controllers.yaml ├── gui │ └── gui.config ├── launch │ ├── raspimouse_with_color_objects.launch.py │ ├── raspimouse_with_emptyworld.launch.py │ ├── raspimouse_with_lakehouse.launch.py │ └── raspimouse_with_line_follower_field.launch.py ├── models │ ├── course_curve_50x50cm │ │ ├── meshes │ │ │ ├── course_curve.jpg │ │ │ └── course_curve_50x50cm.dae │ │ ├── model.config │ │ └── model.sdf │ ├── course_straight_50x50cm │ │ ├── meshes │ │ │ ├── course_straight.jpg │ │ │ └── course_straight_50x50cm.dae │ │ ├── model.config │ │ └── model.sdf │ ├── cube_10cm_blue │ │ ├── model.config │ │ └── model.sdf │ ├── cube_15cm_yellow │ │ ├── model.config │ │ └── model.sdf │ ├── cube_30cm_black │ │ ├── model.config │ │ └── model.sdf │ ├── cube_5cm_red │ │ ├── model.config │ │ └── model.sdf │ └── cube_7.5cm_green │ │ ├── model.config │ │ └── model.sdf ├── package.xml └── worlds │ ├── color_objects_world.sdf │ ├── empty_world.sdf │ ├── lakehouse.sdf │ └── line_follower_field1.sdf └── raspimouse_sim ├── CHANGELOG.rst ├── CMakeLists.txt └── package.xml /.github/workflows/.ci.rosinstall: -------------------------------------------------------------------------------- 1 | - git: 2 | uri: https://github.com/rt-net/raspimouse_description.git 3 | local-name: raspimouse_description 4 | version: jazzy 5 | -------------------------------------------------------------------------------- /.github/workflows/industrial_ci.yml: -------------------------------------------------------------------------------- 1 | name: industrial_ci 2 | 3 | on: 4 | push: 5 | paths-ignore: 6 | - 'docs/**' 7 | - '**.md' 8 | pull_request: 9 | paths-ignore: 10 | - 'docs/**' 11 | - '**.md' 12 | schedule: 13 | - cron: "0 2 * * 0" # Weekly on Sundays at 02:00 14 | 15 | env: 16 | UPSTREAM_WORKSPACE: .github/workflows/.ci.rosinstall 17 | 18 | jobs: 19 | industrial_ci: 20 | strategy: 21 | fail-fast: false 22 | matrix: 23 | ROS_DISTRO: [jazzy] 24 | ROS_REPO: [main] 25 | 26 | runs-on: ubuntu-latest 27 | steps: 28 | - uses: actions/checkout@v4 29 | - uses: "ros-industrial/industrial_ci@master" 30 | env: 31 | ROS_DISTRO: ${{matrix.ROS_DISTRO}} 32 | ROS_REPO: ${{matrix.ROS_REPO}} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | raspimouse_ros/ 2 | dev/ 3 | .idea/ 4 | 5 | ### https://raw.github.com/github/gitignore/07c730e1fccfe0f92b29e039ba149d20bfb332e7/Global/Linux.gitignore 6 | 7 | *~ 8 | 9 | # temporary files which can be created if a process still has a handle open of a deleted file 10 | .fuse_hidden* 11 | 12 | # KDE directory preferences 13 | .directory 14 | 15 | # Linux trash folder which might appear on any partition or disk 16 | .Trash-* 17 | 18 | # .nfs files are created when an open file is removed but is still being accessed 19 | .nfs* 20 | 21 | 22 | ### https://raw.github.com/github/gitignore/07c730e1fccfe0f92b29e039ba149d20bfb332e7/Global/macOS.gitignore 23 | 24 | # General 25 | .DS_Store 26 | .AppleDouble 27 | .LSOverride 28 | 29 | # Icon must end with two \r 30 | Icon 31 | 32 | # Thumbnails 33 | ._* 34 | 35 | # Files that might appear in the root of a volume 36 | .DocumentRevisions-V100 37 | .fseventsd 38 | .Spotlight-V100 39 | .TemporaryItems 40 | .Trashes 41 | .VolumeIcon.icns 42 | .com.apple.timemachine.donotpresent 43 | 44 | # Directories potentially created on remote AFP share 45 | .AppleDB 46 | .AppleDesktop 47 | Network Trash Folder 48 | Temporary Items 49 | .apdisk 50 | 51 | 52 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 RT Corp. 4 | Copyright (c) 2016 Daisuke Sato 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy of 7 | this software and associated documentation files (the "Software"), to deal in 8 | the Software without restriction, including without limitation the rights to 9 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 10 | the Software, and to permit persons to whom the Software is furnished to do so, 11 | subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 18 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 19 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 20 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.en.md: -------------------------------------------------------------------------------- 1 | [English](README.en.md) | [日本語](README.md) 2 | 3 | # raspimouse_sim 4 | 5 | [![industrial_ci](https://github.com/rt-net/raspimouse_sim/actions/workflows/industrial_ci.yml/badge.svg?branch=ros2)](https://github.com/rt-net/raspimouse_sim/actions/workflows/industrial_ci.yml) 6 | 7 | ROS 2 package suite for Raspberry Pi Mouse Simulator runs on Gazebo 8 | 9 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_color_objects_world.png) 10 | 11 | **This branch is intended for ROS 2 Jazzy. For other distributions, please refer to the corresponding branches listed below.** 12 | 13 | - ROS 2 Humble ([humble](https://github.com/rt-net/raspimouse_sim/tree/humble)) 14 | 15 | 16 | ## Requirements 17 | 18 | requires the following to run: 19 | 20 | * Ubuntu 21 | * Ubuntu 24.04 Noble Numbat 22 | * ROS 2 23 | * ROS 2 Jazzy Jalisco 24 | * Gazebo 25 | * Gazebo Sim 8.x 26 | * ROS 2 Package 27 | * ros-jazzy-desktop-full 28 | 29 | ## Installation 30 | 31 | Download this ROS 2 package. 32 | 33 | ```sh 34 | cd ~/ros2_ws/src 35 | git clone -b $ROS_DISTRO https://github.com/rt-net/raspimouse_sim.git 36 | ``` 37 | 38 | Download the dependent ROS 2 packages. 39 | 40 | ```sh 41 | cd ~/ros2_ws/src 42 | git clone -b $ROS_DISTRO https://github.com/rt-net/raspimouse_ros2_examples.git 43 | git clone -b $ROS_DISTRO https://github.com/rt-net/raspimouse_slam_navigation_ros2.git 44 | git clone -b $ROS_DISTRO https://github.com/rt-net/raspimouse_description.git 45 | rosdep install -r -y -i --from-paths raspimouse* 46 | ``` 47 | 48 | Build this package using `colcon`. 49 | 50 | ```sh 51 | cd ~/ros2_ws 52 | colcon build --symlink-install 53 | source ~/ros2_ws/install/setup.bash 54 | ``` 55 | 56 | ## QuickStart 57 | 58 | After building this package, run the following commands. 59 | 60 | ```sh 61 | ros2 launch raspimouse_gazebo raspimouse_with_emptyworld.launch.py 62 | ``` 63 | 64 | ## Examples 65 | 66 | These exsamples require [raspimouse_ros2_examples](https://github.com/rt-net/raspimouse_ros2_examples) to operate. 67 | 68 | ### Joystick Controll 69 | 70 | Terminal 1: 71 | 72 | ```sh 73 | ros2 launch raspimouse_gazebo raspimouse_with_emptyworld.launch.py 74 | ``` 75 | 76 | Terminal 2: 77 | 78 | ```sh 79 | ros2 launch raspimouse_ros2_examples teleop_joy.launch.py joydev:="/dev/input/js0" joyconfig:=f710 mouse:=false 80 | ``` 81 | 82 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_joystick.gif) 83 | 84 | ### Object Tracking 85 | 86 | Terminal 1: 87 | 88 | ```sh 89 | ros2 launch raspimouse_gazebo raspimouse_with_color_objects.launch.py use_rgb_camera:=true 90 | ``` 91 | 92 | Terminal 2: 93 | 94 | ```sh 95 | ros2 launch raspimouse_ros2_examples object_tracking.launch.py mouse:=false use_camera_node:=false 96 | ``` 97 | 98 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_object_tracking.gif) 99 | 100 | ### camera_line_follower 101 | 102 | Terminal 1: 103 | 104 | ```sh 105 | ros2 launch raspimouse_gazebo raspimouse_with_line_follower_field.launch.py use_rgb_camera:=true camera_downward:=true 106 | ``` 107 | 108 | Terminal 2: 109 | 110 | ```sh 111 | ros2 launch raspimouse_ros2_examples camera_line_follower.launch.py mouse:=false use_camera_node:=false 112 | ``` 113 | 114 | Terminal 3: Start 115 | 116 | ```sh 117 | ros2 topic pub --once /switches raspimouse_msgs/msg/Switches "{switch0: false, switch1: false, switch2: true}" 118 | ``` 119 | 120 | Terminal 3: Stop 121 | ```sh 122 | ros2 topic pub --once /switches raspimouse_msgs/msg/Switches "{switch0: true, switch1: false, switch2: false}" 123 | ``` 124 | 125 | For information on parameters in camera line follower, click [here](https://github.com/rt-net/raspimouse_ros2_examples/blob/master/README.en.md#parameters). 126 | 127 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_camerafollower_short.gif) 128 | 129 | ### SLAM & Navigation 130 | 131 | This exsample requires [raspimouse_slam_navigation_ros2](https://github.com/rt-net/raspimouse_slam_navigation_ros2) to operate. 132 | 133 | #### SLAM 134 | 135 | Terminal 1: 136 | ```sh 137 | ros2 launch raspimouse_gazebo raspimouse_with_lakehouse.launch.py lidar:=urg 138 | ``` 139 | The lidar option supports `urg`, `lds`, and `rplidar`. 140 | 141 | Terminal 2: 142 | ```sh 143 | ros2 launch raspimouse_ros2_examples teleop_joy.launch.py joydev:="/dev/input/js0" joyconfig:=f710 mouse:=false 144 | ``` 145 | 146 | Terminal 3: 147 | ```sh 148 | ros2 launch raspimouse_slam pc_slam.launch.py 149 | ``` 150 | 151 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_slam.png) 152 | 153 | Terminal 4: 154 | ```sh 155 | ros2 run nav2_map_server map_saver_cli -f ~/MAP_NAME 156 | ``` 157 | 158 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_slam_short.gif) 159 | 160 | #### Navigation 161 | 162 | Terminal 1: 163 | ```sh 164 | ros2 launch raspimouse_gazebo raspimouse_with_lakehouse.launch.py lidar:=urg 165 | ``` 166 | The lidar option supports `urg`, `lds`, and `rplidar`. 167 | 168 | Terminal 2: 169 | ```sh 170 | ros2 launch raspimouse_navigation pc_navigation.launch.py use_sim_time:=true map:=$HOME/MAP_NAME.yaml 171 | ``` 172 | 173 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_navigation_short.gif) 174 | 175 | ## Model data list 176 | 177 | ### course_curve_50x50cm 178 | Curve course panel for line following. 179 | Panel size is 50 cm x 50 cm and line width is 4 cm. 180 | 181 | ![](./raspimouse_gazebo/models/course_curve_50x50cm/meshes/course_curve.jpg) 182 | 183 | ### course_straight_50x50cm 184 | Straight course panel for line following. 185 | Panel size is 50 cm x 50 cm and line width is 4 cm. 186 | 187 | ![](./raspimouse_gazebo/models/course_straight_50x50cm/meshes/course_straight.jpg) 188 | 189 | ### cube_*cm_color-name 190 | Each cube is 5 cm, 7.5 cm, 10 cm, and 15 cm, 30 cm on a side. 191 | The cube colors are red, yellow, blue, green and black. 192 | 193 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/color_objects.png) 194 | 195 | ### about dae files 196 | The dae file is edited in Blender 4.0. 197 | 198 | ## License 199 | 200 | This repository is licensed under the MIT license, see [LICENSE]( ./LICENSE ). 201 | Unless attributed otherwise, everything in this repository is under the MIT license. 202 | 203 | ### Acknowledgements 204 | 205 | * [CIR-KIT/fourth_robot_pkg]( https://github.com/CIR-KIT/fourth_robot_pkg ) 206 | * author 207 | * RyodoTanaka 208 | * maintainer 209 | * RyodoTanaka 210 | * BSD ([BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause)) 211 | * See [package.xml](https://github.com/CIR-KIT/fourth_robot_pkg/blob/indigo-devel/fourth_robot_control/package.xml) for details. 212 | * [yujinrobot/kobuki]( https://github.com/yujinrobot/kobuki ) 213 | * authors 214 | * Daniel Stonier 215 | * Younghun Ju 216 | * Jorge Santos Simon 217 | * Marcus Liebhardt 218 | * maintainer 219 | * Daniel Stonier 220 | * BSD ([BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause)) 221 | * See [package.xml](https://github.com/yujinrobot/kobuki/blob/melodic/kobuki/package.xml) for details。 222 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [English](README.en.md) | [日本語](README.md) 2 | 3 | # raspimouse_sim 4 | 5 | [![industrial_ci](https://github.com/rt-net/raspimouse_sim/actions/workflows/industrial_ci.yml/badge.svg?branch=ros2)](https://github.com/rt-net/raspimouse_sim/actions/workflows/industrial_ci.yml) 6 | 7 | Gazebo上でシミュレートできるRaspberry Pi MouseのROS 2パッケージです。 8 | 9 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_color_objects_world.png) 10 | 11 | **本ブランチはROS 2 Jazzy向けです。他のディストリビューションについては、以下にリストされた対応するブランチを参照してください。** 12 | 13 | - ROS 2 Humble ([humble](https://github.com/rt-net/raspimouse_sim/tree/humble)) 14 | 15 | ## 動作環境 16 | 17 | 以下の環境を前提として動作確認しています。 18 | 19 | * Ubuntu 20 | * Ubuntu 24.04 Noble Numbat 21 | * ROS 2 22 | * ROS 2 Jazzy Jalisco 23 | * Gazebo 24 | * Gazebo Sim 8.x 25 | * ROS 2 Package 26 | * ros-jazzy-desktop-full 27 | 28 | ## インストール方法 29 | 30 | このROS 2パッケージをダウンロードします。 31 | 32 | ```sh 33 | cd ~/ros2_ws/src 34 | git clone -b $ROS_DISTRO https://github.com/rt-net/raspimouse_sim.git 35 | ``` 36 | 37 | 依存しているROS 2パッケージをインストールします。 38 | 39 | ```sh 40 | cd ~/ros2_ws/src 41 | git clone -b $ROS_DISTRO https://github.com/rt-net/raspimouse_ros2_examples.git 42 | git clone -b $ROS_DISTRO https://github.com/rt-net/raspimouse_slam_navigation_ros2.git 43 | git clone -b $ROS_DISTRO https://github.com/rt-net/raspimouse_description.git 44 | rosdep install -r -y -i --from-paths raspimouse* 45 | ``` 46 | 47 | `colcon`を使用してパッケージをビルドします。 48 | 49 | ```sh 50 | cd ~/ros2_ws 51 | colcon build --symlink-install 52 | source ~/ros2_ws/install/setup.bash 53 | ``` 54 | 55 | ## QuickStart 56 | 57 | パッケージビルド後、次のコマンドを実行するとGazeboシミュレータが起動します。 58 | 59 | ```sh 60 | ros2 launch raspimouse_gazebo raspimouse_with_emptyworld.launch.py 61 | ``` 62 | 63 | ## サンプル動作例 64 | 65 | 各サンプルの動作には、[raspimouse_ros2_examples](https://github.com/rt-net/raspimouse_ros2_examples)が必要です。 66 | 67 | ### ジョイスティックコントローラによる操縦サンプル 68 | 69 | 端末1で次のコマンドを実行すると、Gazeboシミュレータが起動します。 70 | 71 | ```sh 72 | ros2 launch raspimouse_gazebo raspimouse_with_emptyworld.launch.py 73 | ``` 74 | 75 | 端末2で次のコマンドを実行すると、Raspberry Pi Mouseをジョイスティックコントローラで操作できます。 76 | 77 | ```sh 78 | ros2 launch raspimouse_ros2_examples teleop_joy.launch.py joydev:="/dev/input/js0" joyconfig:=f710 mouse:=false 79 | ``` 80 | 81 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_joystick.gif) 82 | 83 | ### RGBカメラを用いた色検出による物体追従サンプル 84 | 85 | 端末1で次のコマンドを実行すると、色付きの立方体が配置されたワールドが表示されます。 86 | 87 | ```sh 88 | ros2 launch raspimouse_gazebo raspimouse_with_color_objects.launch.py use_rgb_camera:=true 89 | ``` 90 | 91 | 端末2で次のコマンドを実行すると、Raspberry Pi Mouseがオレンジ色(赤色)の物体を追従します。 92 | 93 | ```sh 94 | ros2 launch raspimouse_ros2_examples object_tracking.launch.py mouse:=false use_camera_node:=false 95 | ``` 96 | 97 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_object_tracking.gif) 98 | 99 | ### RGBカメラを用いたライントレースサンプル 100 | 101 | 端末1で次のコマンドを実行すると、ライントレースのサンプルコースが配置されたワールドが表示されます。 102 | ```sh 103 | ros2 launch raspimouse_gazebo raspimouse_with_line_follower_field.launch.py use_rgb_camera:=true camera_downward:=true 104 | ``` 105 | 106 | 端末2で次のコマンドを実行すると、カメラライントレースのノードが起動します。 107 | ```sh 108 | ros2 launch raspimouse_ros2_examples camera_line_follower.launch.py mouse:=false use_camera_node:=false 109 | ``` 110 | 111 | 端末3で次のコマンドを実行すると、Raspberry Pi Mouseが走行を開始します。 112 | ```sh 113 | ros2 topic pub --once /switches raspimouse_msgs/msg/Switches "{switch0: false, switch1: false, switch2: true}" 114 | ``` 115 | 116 | 次のコマンドを実行すると、Raspberry Pi Mouseが停止します。 117 | ```sh 118 | ros2 topic pub --once /switches raspimouse_msgs/msg/Switches "{switch0: true, switch1: false, switch2: false}" 119 | ``` 120 | 121 | カメラライントレースにおけるパラメータは[こちら](https://github.com/rt-net/raspimouse_ros2_examples?tab=readme-ov-file#parameters)を参照してください。 122 | 123 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_camerafollower_short.gif) 124 | 125 | ### LiDARを用いたSLAMとNavigationのサンプル 126 | 127 | 本サンプルの動作には、[raspimouse_slam_navigation_ros2](https://github.com/rt-net/raspimouse_slam_navigation_ros2) が必要です。 128 | 129 | #### SLAM 130 | 131 | 端末1で次のコマンドを実行すると、`Lake House`のモデルが配置されたワールドが表示されます。 132 | ```sh 133 | ros2 launch raspimouse_gazebo raspimouse_with_lakehouse.launch.py lidar:=urg 134 | ``` 135 | `lidar`は`urg`、`lds`、`rplidar`のいずれかを指定してください。 136 | 137 | 端末2で次のコマンドを実行すると、Raspberry Pi Mouseをジョイスティックコントローラで操作できます。 138 | ```sh 139 | ros2 launch raspimouse_ros2_examples teleop_joy.launch.py joydev:="/dev/input/js0" joyconfig:=f710 mouse:=false 140 | ``` 141 | 142 | 端末3で次のコマンドを実行すると、SLAMが実行されます。 143 | ```sh 144 | ros2 launch raspimouse_slam pc_slam.launch.py 145 | ``` 146 | 147 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_slam.png) 148 | 149 | 端末4で次のコマンドを実行すると、作成した地図を保存できます。 150 | ```sh 151 | ros2 run nav2_map_server map_saver_cli -f ~/MAP_NAME 152 | ``` 153 | `MAP_NAME`は任意の名前を指定できます。 154 | 155 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_slam_short.gif) 156 | 157 | #### Navigation 158 | 159 | 端末1で次のコマンドを実行すると、`Lake House`のモデルが配置されたワールドが表示されます。 160 | ```sh 161 | ros2 launch raspimouse_gazebo raspimouse_with_lakehouse.launch.py lidar:=urg 162 | ``` 163 | `lidar`は`urg`、`lds`、`rplidar`のいずれかを指定してください。 164 | 165 | 端末2で次のコマンドを実行すると、Navigationが実行されます。 166 | ```sh 167 | ros2 launch raspimouse_navigation pc_navigation.launch.py use_sim_time:=true map:=$HOME/MAP_NAME.yaml 168 | ``` 169 | 引数`map`にはSLAMで作成した地図ファイルのパスを指定してください。 170 | 171 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/raspimouse_sim_navigation_short.gif) 172 | 173 | ## モデルデータ一覧 174 | 175 | ### course_curve_50x50cm 176 | 177 | ライントレース用の曲線コースパネルです。 178 | パネルサイズは50cm x 50cm、線の幅は4cmです。 179 | 180 | ![](./raspimouse_gazebo/models/course_curve_50x50cm/meshes/course_curve.jpg) 181 | 182 | ### course_straight_50x50cm 183 | 184 | ライントレース用の直線コースパネルです。 185 | パネルサイズは50cm x 50cm、線の幅は4cmです。 186 | 187 | ![](./raspimouse_gazebo/models/course_straight_50x50cm/meshes/course_straight.jpg) 188 | 189 | ### cube_*cm_color-name 190 | それぞれ一辺5cm、7.5cm、10cm、15cm、30cmの立方体です。 191 | 色は赤、黄、青、緑、黒です。 192 | 193 | ![](https://rt-net.github.io/images/raspberry-pi-mouse/color_objects.png) 194 | 195 | ### daeファイルについて 196 | daeファイルはBlender 4.0で編集しています。 197 | 198 | ## ライセンス 199 | 200 | このリポジトリはMITライセンスに基づいて公開されています。 201 | MITライセンスについては[LICENSE]( ./LICENSE )を確認してください。 202 | 203 | ※このソフトウェアは基本的にオープンソースソフトウェアとして「AS IS」(現状有姿のまま)で提供しています。本ソフトウェアに関する無償サポートはありません。 204 | バグの修正や誤字脱字の修正に関するリクエストは常に受け付けていますが、それ以外の機能追加等のリクエストについては社内のガイドラインを優先します。 205 | 206 | ### 謝辞 207 | 208 | 以下のリポジトリのファイルをベースに開発されています。 209 | 210 | * [CIR-KIT/fourth_robot_pkg]( https://github.com/CIR-KIT/fourth_robot_pkg ) 211 | * author 212 | * RyodoTanaka 213 | * maintainer 214 | * RyodoTanaka 215 | * BSD ([BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause)) 216 | * 詳細は [package.xml](https://github.com/CIR-KIT/fourth_robot_pkg/blob/indigo-devel/fourth_robot_control/package.xml) を参照してください。 217 | * [yujinrobot/kobuki]( https://github.com/yujinrobot/kobuki ) 218 | * authors 219 | * Daniel Stonier 220 | * Younghun Ju 221 | * Jorge Santos Simon 222 | * Marcus Liebhardt 223 | * maintainer 224 | * Daniel Stonier 225 | * BSD ([BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause)) 226 | * 詳細は [package.xml](https://github.com/yujinrobot/kobuki/blob/melodic/kobuki/package.xml) を参照してください。 227 | -------------------------------------------------------------------------------- /raspimouse_fake/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package raspimouse_fake 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 3.0.1 (2024-11-29) 6 | ------------------ 7 | 8 | 3.0.0 (2024-11-25) 9 | ------------------ 10 | * Support ROS 2 Jazzy (`#80 `_) 11 | * Changed the header file extension from ".h" to ".hpp" 12 | * Contributors: Kazushi Kurasawa, YusukeKato 13 | 14 | 2.1.0 (2024-03-05) 15 | ------------------ 16 | 17 | 2.0.0 (2023-11-07) 18 | ------------------ 19 | * シミュレータ環境に擬似的なラズパイマウスノードを追加 (`#69 `_) 20 | Co-authored-by: Shota Aoki 21 | * ROS 2 Humble環境のraspimouse_with_emptyworld.launch.pyを実装 (`#66 `_) 22 | * Contributors: YusukeKato 23 | 24 | 0.1.1 (2023-08-22) 25 | ------------------ 26 | * Fix CMakeLists.txt to support both python2 and 3 (`#62 `_) 27 | * Use DiffDriveController defined in xacro to simplify raspimouse_gazebo (`#53 `_) 28 | * Contributors: Daisuke Sato, Shota Aoki 29 | -------------------------------------------------------------------------------- /raspimouse_fake/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(raspimouse_fake) 3 | 4 | find_package(ament_cmake REQUIRED) 5 | find_package(rclcpp REQUIRED) 6 | find_package(rclcpp_components REQUIRED) 7 | find_package(rclcpp_lifecycle REQUIRED) 8 | find_package(lifecycle_msgs REQUIRED) 9 | find_package(std_srvs REQUIRED) 10 | 11 | include_directories(include) 12 | 13 | add_library(fake_raspimouse_component SHARED 14 | src/fake_raspimouse_component.cpp) 15 | target_compile_definitions(fake_raspimouse_component 16 | PRIVATE "RASPIMOUSE_FAKE_BUILDING_DLL") 17 | ament_target_dependencies(fake_raspimouse_component 18 | rclcpp 19 | rclcpp_components 20 | rclcpp_lifecycle 21 | lifecycle_msgs 22 | std_srvs) 23 | rclcpp_components_register_nodes(fake_raspimouse_component "fake_raspimouse::Raspimouse") 24 | 25 | ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET) 26 | 27 | ament_export_dependencies(rclcpp) 28 | ament_export_dependencies(rclcpp_components) 29 | ament_export_dependencies(rclcpp_lifecycle) 30 | ament_export_dependencies(std_srvs) 31 | ament_export_dependencies(lifecycle_msgs) 32 | 33 | ament_export_include_directories(include) 34 | ament_export_libraries( 35 | fake_raspimouse_component) 36 | 37 | install( 38 | DIRECTORY include/ 39 | DESTINATION include/ 40 | ) 41 | 42 | install(TARGETS 43 | fake_raspimouse_component 44 | EXPORT export_${PROJECT_NAME} 45 | ARCHIVE DESTINATION lib 46 | LIBRARY DESTINATION lib 47 | RUNTIME DESTINATION bin 48 | INCLUDES DESTINATION include) 49 | 50 | install(TARGETS 51 | DESTINATION lib/${PROJECT_NAME}) 52 | 53 | install(DIRECTORY 54 | DESTINATION share/${PROJECT_NAME}/ 55 | ) 56 | 57 | if(BUILD_TESTING) 58 | find_package(ament_lint_auto REQUIRED) 59 | ament_lint_auto_find_test_dependencies() 60 | endif() 61 | 62 | ament_package() 63 | -------------------------------------------------------------------------------- /raspimouse_fake/include/raspimouse_fake/fake_raspimouse_component.hpp: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright 2023-2024 RT Corporation 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | // this software and associated documentation files (the "Software"), to deal in 7 | // the Software without restriction, including without limitation the rights to 8 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | // the Software, and to permit persons to whom the Software is furnished to do so, 10 | // subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | #ifndef RASPIMOUSE_FAKE__FAKE_RASPIMOUSE_COMPONENT_HPP_ 23 | #define RASPIMOUSE_FAKE__FAKE_RASPIMOUSE_COMPONENT_HPP_ 24 | 25 | #include 26 | 27 | #include "raspimouse_fake/visibility_control.hpp" 28 | #include "rclcpp/rclcpp.hpp" 29 | #include "rclcpp_lifecycle/lifecycle_node.hpp" 30 | #include "rclcpp_lifecycle/lifecycle_publisher.hpp" 31 | #include "std_srvs/srv/set_bool.hpp" 32 | 33 | namespace fake_raspimouse 34 | { 35 | 36 | class Raspimouse : public rclcpp_lifecycle::LifecycleNode 37 | { 38 | public: 39 | RASPIMOUSE_FAKE_PUBLIC 40 | explicit Raspimouse(const rclcpp::NodeOptions & options); 41 | 42 | private: 43 | rclcpp::Service::SharedPtr motor_power_service_; 44 | 45 | rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_configure( 46 | const rclcpp_lifecycle::State &); 47 | rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_activate( 48 | const rclcpp_lifecycle::State &); 49 | rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_deactivate( 50 | const rclcpp_lifecycle::State &); 51 | rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_cleanup( 52 | const rclcpp_lifecycle::State &); 53 | rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn on_shutdown( 54 | const rclcpp_lifecycle::State &); 55 | 56 | void handle_motor_power( 57 | const std::shared_ptr request_header, 58 | const std::shared_ptr request, 59 | const std::shared_ptr response); 60 | }; 61 | 62 | } // namespace fake_raspimouse 63 | 64 | #endif // RASPIMOUSE_FAKE__FAKE_RASPIMOUSE_COMPONENT_HPP_ 65 | -------------------------------------------------------------------------------- /raspimouse_fake/include/raspimouse_fake/visibility_control.hpp: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright 2023-2024 RT Corporation 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | // this software and associated documentation files (the "Software"), to deal in 7 | // the Software without restriction, including without limitation the rights to 8 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | // the Software, and to permit persons to whom the Software is furnished to do so, 10 | // subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | #ifndef RASPIMOUSE_FAKE__VISIBILITY_CONTROL_HPP_ 23 | #define RASPIMOUSE_FAKE__VISIBILITY_CONTROL_HPP_ 24 | 25 | #ifdef __cplusplus 26 | extern "C" 27 | { 28 | #endif 29 | 30 | // This logic was borrowed (then namespaced) from the examples on the gcc wiki: 31 | // https://gcc.gnu.org/wiki/Visibility 32 | 33 | #if defined _WIN32 || defined __CYGWIN__ 34 | #ifdef __GNUC__ 35 | #define RASPIMOUSE_FAKE_EXPORT __attribute__ ((dllexport)) 36 | #define RASPIMOUSE_FAKE_IMPORT __attribute__ ((dllimport)) 37 | #else 38 | #define RASPIMOUSE_FAKE_EXPORT __declspec(dllexport) 39 | #define RASPIMOUSE_FAKE_IMPORT __declspec(dllimport) 40 | #endif 41 | #ifdef RASPIMOUSE_FAKE_BUILDING_DLL 42 | #define RASPIMOUSE_FAKE_PUBLIC RASPIMOUSE_FAKE_EXPORT 43 | #else 44 | #define RASPIMOUSE_FAKE_PUBLIC RASPIMOUSE_FAKE_IMPORT 45 | #endif 46 | #define RASPIMOUSE_FAKE_PUBLIC_TYPE RASPIMOUSE_FAKE_PUBLIC 47 | #define RASPIMOUSE_FAKE_LOCAL 48 | #else 49 | #define RASPIMOUSE_FAKE_EXPORT __attribute__ ((visibility("default"))) 50 | #define RASPIMOUSE_FAKE_IMPORT 51 | #if __GNUC__ >= 4 52 | #define RASPIMOUSE_FAKE_PUBLIC __attribute__ ((visibility("default"))) 53 | #define RASPIMOUSE_FAKE_LOCAL __attribute__ ((visibility("hidden"))) 54 | #else 55 | #define RASPIMOUSE_FAKE_PUBLIC 56 | #define RASPIMOUSE_FAKE_LOCAL 57 | #endif 58 | #define RASPIMOUSE_FAKE_PUBLIC_TYPE 59 | #endif 60 | 61 | #ifdef __cplusplus 62 | } 63 | #endif 64 | 65 | #endif // RASPIMOUSE_FAKE__VISIBILITY_CONTROL_HPP_ 66 | -------------------------------------------------------------------------------- /raspimouse_fake/misc/ms_sound.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rt-net/raspimouse_sim/789dd4d8fceea5d67ac313c316410140afced849/raspimouse_fake/misc/ms_sound.wav -------------------------------------------------------------------------------- /raspimouse_fake/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | raspimouse_fake 5 | 3.0.1 6 | The raspimouse_control package 7 | RT Corporation 8 | MIT 9 | 10 | Daisuke Sato 11 | Yuki Watanabe 12 | Yusuke Kato 13 | Kazushi Kurasawa 14 | 15 | ament_cmake 16 | 17 | ament_lint_auto 18 | ament_lint_common 19 | 20 | geometry_msgs 21 | sensor_msgs 22 | std_srvs 23 | lifecycle_msgs 24 | rclcpp 25 | rclcpp_components 26 | rclcpp_lifecycle 27 | 28 | 29 | ament_cmake 30 | 31 | 32 | -------------------------------------------------------------------------------- /raspimouse_fake/src/fake_raspimouse_component.cpp: -------------------------------------------------------------------------------- 1 | // The MIT License (MIT) 2 | // 3 | // Copyright 2023-2024 RT Corporation 4 | // 5 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | // this software and associated documentation files (the "Software"), to deal in 7 | // the Software without restriction, including without limitation the rights to 8 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | // the Software, and to permit persons to whom the Software is furnished to do so, 10 | // subject to the following conditions: 11 | // 12 | // The above copyright notice and this permission notice shall be included in all 13 | // copies or substantial portions of the Software. 14 | // 15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | #include "raspimouse_fake/fake_raspimouse_component.hpp" 23 | 24 | #include "lifecycle_msgs/srv/change_state.hpp" 25 | #include "rclcpp/rclcpp.hpp" 26 | #include "std_srvs/srv/set_bool.hpp" 27 | 28 | using namespace std::chrono_literals; 29 | using CallbackReturn = rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn; 30 | 31 | namespace fake_raspimouse 32 | { 33 | 34 | Raspimouse::Raspimouse(const rclcpp::NodeOptions & options) 35 | : rclcpp_lifecycle::LifecycleNode("fake_raspimouse", options) 36 | { 37 | } 38 | 39 | CallbackReturn Raspimouse::on_configure(const rclcpp_lifecycle::State &) 40 | { 41 | RCLCPP_INFO(this->get_logger(), "fake_raspimouse node is configured."); 42 | 43 | using namespace std::placeholders; // for _1, _2, _3... 44 | 45 | motor_power_service_ = create_service( 46 | "motor_power", std::bind(&Raspimouse::handle_motor_power, this, _1, _2, _3)); 47 | 48 | return CallbackReturn::SUCCESS; 49 | } 50 | 51 | CallbackReturn Raspimouse::on_activate(const rclcpp_lifecycle::State &) 52 | { 53 | RCLCPP_INFO(this->get_logger(), "fake_raspimouse node is activated."); 54 | 55 | return CallbackReturn::SUCCESS; 56 | } 57 | 58 | CallbackReturn Raspimouse::on_deactivate(const rclcpp_lifecycle::State &) 59 | { 60 | RCLCPP_INFO(this->get_logger(), "fake_raspimouse node is deactivated."); 61 | 62 | return CallbackReturn::SUCCESS; 63 | } 64 | 65 | CallbackReturn Raspimouse::on_cleanup(const rclcpp_lifecycle::State &) 66 | { 67 | RCLCPP_INFO(this->get_logger(), "fake_raspimouse node is cleaned up."); 68 | 69 | return CallbackReturn::SUCCESS; 70 | } 71 | 72 | CallbackReturn Raspimouse::on_shutdown(const rclcpp_lifecycle::State &) 73 | { 74 | RCLCPP_INFO(this->get_logger(), "fake_raspimouse node is shutdown."); 75 | 76 | return CallbackReturn::SUCCESS; 77 | } 78 | 79 | void Raspimouse::handle_motor_power( 80 | const std::shared_ptr request_header, 81 | const std::shared_ptr request, 82 | const std::shared_ptr response) 83 | { 84 | (void)request_header; 85 | response->success = true; 86 | if (request->data) { 87 | response->message = "Motors are on"; 88 | } else { 89 | response->message = "Motors are off"; 90 | } 91 | } 92 | 93 | } // namespace fake_raspimouse 94 | 95 | #include "rclcpp_components/register_node_macro.hpp" 96 | 97 | RCLCPP_COMPONENTS_REGISTER_NODE(fake_raspimouse::Raspimouse) 98 | -------------------------------------------------------------------------------- /raspimouse_gazebo/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package raspimouse_gazebo 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 3.0.1 (2024-11-29) 6 | ------------------ 7 | 8 | 3.0.0 (2024-11-25) 9 | ------------------ 10 | * Support ROS 2 Jazzy (`#80 `_) 11 | * Changed Gazebo from "Ignition Gazebo" to "Gazebo Sim" 12 | * Contributors: Kazushi Kurasawa, YusukeKato 13 | 14 | 2.1.0 (2024-03-05) 15 | ------------------ 16 | * シミュレータ環境でSLAMとNavigationを実行 (`#77 `_) 17 | Co-authored-by: Shota Aoki 18 | * コントローラのパラメータを調整してオドメトリのズレを修正 (`#76 `_) 19 | * camera_downwardがtrueのときRGBカメラが斜め下を向くように変更 (`#75 `_) 20 | Co-authored-by: Shota Aoki 21 | * ライントレース用のコースを作成 (`#74 `_) 22 | Co-authored-by: Shota Aoki 23 | * Contributors: YusukeKato 24 | 25 | 2.0.0 (2023-11-07) 26 | ------------------ 27 | * Gazebo上で画像トピックを配信できるようにbridgeを設定 (`#71 `_) 28 | * カメラサンプル用のcolor_objects_worldを作成 (`#70 `_) 29 | * シミュレータ環境に擬似的なラズパイマウスノードを追加 (`#69 `_) 30 | Co-authored-by: Shota Aoki 31 | * controller managerノードにプラグインを追加するように変更 (`#68 `_) 32 | * robot_description_lodarを使用するように変更 (`#67 `_) 33 | * ROS 2 Humble環境のraspimouse_with_emptyworld.launch.pyを実装 (`#66 `_) 34 | * Contributors: YusukeKato 35 | 36 | 0.1.1 (2023-08-22) 37 | ------------------ 38 | * Fix CMakeLists.txt to support both python2 and 3 (`#62 `_) 39 | * Add urg on/off option and lidar frame rename option (`#57 `_) 40 | * Add LaserScan topic to RViz configuration file (`#59 `_) 41 | * Add keyboard teleop lauch (`#56 `_) 42 | * Update namespace to fix odom tf error (`#55 `_) 43 | * Use DiffDriveController defined in xacro to simplify raspimouse_gazebo (`#53 `_) 44 | * Disable shadows by default (`#51 `_) 45 | * Refactor XML format files (`#43 `_) 46 | * Add an office-like Gazebo world sample (`#46 `_) 47 | Co-authored-by: yukixx6 48 | * Replace deprecated xacro parser (`#45 `_) 49 | * Add Gazebo model download script (`#47 `_) 50 | * Migrate package.xml to Format 2 (`#41 `_) 51 | * Add use_devfile argumet to launch files to make virtual device file optional (`#34 `_) 52 | * fix raspimouse_with_empetyworld.launch to load robot descrption (`#35 `_) 53 | * Add an index to each wall model name for fixing `#26 `_ (`#32 `_) 54 | * Merge pull request `#15 `_ from Tiryoh/spike 55 | * Merge pull request `#8 `_ from Tiryoh/spike 56 | * Refactoring to reduce warning 57 | * Update launch files 58 | * Update file path of urdf model 59 | * Initial commit 60 | * Contributors: Daisuke Sato, Shota Aoki, Shuhei Kozasa, Tiryoh 61 | -------------------------------------------------------------------------------- /raspimouse_gazebo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(raspimouse_gazebo) 3 | 4 | find_package(ament_cmake REQUIRED) 5 | 6 | install(DIRECTORY 7 | launch 8 | worlds 9 | gui 10 | config 11 | models 12 | DESTINATION share/${PROJECT_NAME}/ 13 | ) 14 | 15 | if(BUILD_TESTING) 16 | find_package(ament_lint_auto REQUIRED) 17 | ament_lint_auto_find_test_dependencies() 18 | endif() 19 | 20 | ament_package() 21 | -------------------------------------------------------------------------------- /raspimouse_gazebo/config/config.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz_common/Displays 3 | Help Height: 78 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: ~ 7 | Splitter Ratio: 0.5 8 | Tree Height: 355 9 | - Class: rviz_common/Selection 10 | Name: Selection 11 | - Class: rviz_common/Tool Properties 12 | Expanded: 13 | - /2D Goal Pose1 14 | - /Publish Point1 15 | Name: Tool Properties 16 | Splitter Ratio: 0.5886790156364441 17 | - Class: rviz_common/Views 18 | Expanded: 19 | - /Current View1 20 | Name: Views 21 | Splitter Ratio: 0.5 22 | - Class: rviz_common/Time 23 | Experimental: false 24 | Name: Time 25 | SyncMode: 0 26 | SyncSource: "" 27 | Visualization Manager: 28 | Class: "" 29 | Displays: 30 | - Alpha: 0.5 31 | Cell Size: 1 32 | Class: rviz_default_plugins/Grid 33 | Color: 160; 160; 164 34 | Enabled: true 35 | Line Style: 36 | Line Width: 0.029999999329447746 37 | Value: Lines 38 | Name: Grid 39 | Normal Cell Count: 0 40 | Offset: 41 | X: 0 42 | Y: 0 43 | Z: 0 44 | Plane: XY 45 | Plane Cell Count: 10 46 | Reference Frame: 47 | Value: true 48 | - Alpha: 1 49 | Class: rviz_default_plugins/RobotModel 50 | Collision Enabled: false 51 | Description File: "" 52 | Description Source: Topic 53 | Description Topic: 54 | Depth: 5 55 | Durability Policy: Volatile 56 | History Policy: Keep Last 57 | Reliability Policy: Reliable 58 | Value: /robot_description 59 | Enabled: true 60 | Links: 61 | All Links Enabled: true 62 | Expand Joint Details: false 63 | Expand Link Details: false 64 | Expand Tree: false 65 | Link Tree Style: Links in Alphabetic Order 66 | base_footprint: 67 | Alpha: 1 68 | Show Axes: false 69 | Show Trail: false 70 | base_link: 71 | Alpha: 1 72 | Show Axes: false 73 | Show Trail: false 74 | Value: true 75 | camera_bottom_screw_frame: 76 | Alpha: 1 77 | Show Axes: false 78 | Show Trail: false 79 | camera_link: 80 | Alpha: 1 81 | Show Axes: false 82 | Show Trail: false 83 | Value: true 84 | left_wheel: 85 | Alpha: 1 86 | Show Axes: false 87 | Show Trail: false 88 | Value: true 89 | lf_lightsensor_link: 90 | Alpha: 1 91 | Show Axes: false 92 | Show Trail: false 93 | Value: true 94 | lightsensors: 95 | Alpha: 1 96 | Show Axes: false 97 | Show Trail: false 98 | ls_lightsensor_link: 99 | Alpha: 1 100 | Show Axes: false 101 | Show Trail: false 102 | Value: true 103 | rf_lightsensor_link: 104 | Alpha: 1 105 | Show Axes: false 106 | Show Trail: false 107 | Value: true 108 | right_wheel: 109 | Alpha: 1 110 | Show Axes: false 111 | Show Trail: false 112 | Value: true 113 | rs_lightsensor_link: 114 | Alpha: 1 115 | Show Axes: false 116 | Show Trail: false 117 | Value: true 118 | Mass Properties: 119 | Inertia: false 120 | Mass: false 121 | Name: RobotModel 122 | TF Prefix: "" 123 | Update Interval: 0 124 | Value: true 125 | Visual Enabled: true 126 | - Angle Tolerance: 0.20000000298023224 127 | Class: rviz_default_plugins/Odometry 128 | Covariance: 129 | Orientation: 130 | Alpha: 0.5 131 | Color: 255; 255; 127 132 | Color Style: Unique 133 | Frame: Local 134 | Offset: 1 135 | Scale: 1 136 | Value: true 137 | Position: 138 | Alpha: 0.30000001192092896 139 | Color: 204; 51; 204 140 | Scale: 1 141 | Value: true 142 | Value: true 143 | Enabled: true 144 | Keep: 100 145 | Name: Odometry 146 | Position Tolerance: 0.20000000298023224 147 | Shape: 148 | Alpha: 1 149 | Axes Length: 1 150 | Axes Radius: 0.10000000149011612 151 | Color: 255; 25; 0 152 | Head Length: 0.10000000149011612 153 | Head Radius: 0.10000000149011612 154 | Shaft Length: 0.10000000149011612 155 | Shaft Radius: 0.05000000074505806 156 | Value: Arrow 157 | Topic: 158 | Depth: 5 159 | Durability Policy: Volatile 160 | Filter size: 10 161 | History Policy: Keep Last 162 | Reliability Policy: Reliable 163 | Value: /odom 164 | Value: true 165 | - Class: rviz_default_plugins/Image 166 | Enabled: true 167 | Max Value: 1 168 | Median window: 5 169 | Min Value: 0 170 | Name: Image 171 | Normalize Range: true 172 | Topic: 173 | Depth: 5 174 | Durability Policy: Volatile 175 | History Policy: Keep Last 176 | Reliability Policy: Reliable 177 | Value: /camera/color/image_raw 178 | Value: true 179 | Enabled: true 180 | Global Options: 181 | Background Color: 48; 48; 48 182 | Fixed Frame: odom 183 | Frame Rate: 30 184 | Name: root 185 | Tools: 186 | - Class: rviz_default_plugins/Interact 187 | Hide Inactive Objects: true 188 | - Class: rviz_default_plugins/MoveCamera 189 | - Class: rviz_default_plugins/Select 190 | - Class: rviz_default_plugins/FocusCamera 191 | - Class: rviz_default_plugins/Measure 192 | Line color: 128; 128; 0 193 | - Class: rviz_default_plugins/SetInitialPose 194 | Covariance x: 0.25 195 | Covariance y: 0.25 196 | Covariance yaw: 0.06853891909122467 197 | Topic: 198 | Depth: 5 199 | Durability Policy: Volatile 200 | History Policy: Keep Last 201 | Reliability Policy: Reliable 202 | Value: /initialpose 203 | - Class: rviz_default_plugins/SetGoal 204 | Topic: 205 | Depth: 5 206 | Durability Policy: Volatile 207 | History Policy: Keep Last 208 | Reliability Policy: Reliable 209 | Value: /goal_pose 210 | - Class: rviz_default_plugins/PublishPoint 211 | Single click: true 212 | Topic: 213 | Depth: 5 214 | Durability Policy: Volatile 215 | History Policy: Keep Last 216 | Reliability Policy: Reliable 217 | Value: /clicked_point 218 | Transformation: 219 | Current: 220 | Class: rviz_default_plugins/TF 221 | Value: true 222 | Views: 223 | Current: 224 | Class: rviz_default_plugins/Orbit 225 | Distance: 2.6678879261016846 226 | Enable Stereo Rendering: 227 | Stereo Eye Separation: 0.05999999865889549 228 | Stereo Focal Distance: 1 229 | Swap Stereo Eyes: false 230 | Value: false 231 | Focal Point: 232 | X: 0 233 | Y: 0 234 | Z: 0 235 | Focal Shape Fixed Size: true 236 | Focal Shape Size: 0.05000000074505806 237 | Invert Z Axis: false 238 | Name: Current View 239 | Near Clip Distance: 0.009999999776482582 240 | Pitch: 0.785398006439209 241 | Target Frame: 242 | Value: Orbit (rviz) 243 | Yaw: 0.785398006439209 244 | Saved: ~ 245 | Window Geometry: 246 | Displays: 247 | collapsed: false 248 | Height: 846 249 | Hide Left Dock: false 250 | Hide Right Dock: false 251 | Image: 252 | collapsed: false 253 | QMainWindow State: 000000ff00000000fd000000040000000000000156000002b0fc0200000009fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001ee000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000a0049006d0061006700650100000231000000bc0000002800ffffff000000010000010f000002b0fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d000002b0000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004b00000003efc0100000002fb0000000800540069006d00650100000000000004b0000002fb00fffffffb0000000800540069006d006501000000000000045000000000000000000000023f000002b000000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 254 | Selection: 255 | collapsed: false 256 | Time: 257 | collapsed: false 258 | Tool Properties: 259 | collapsed: false 260 | Views: 261 | collapsed: false 262 | Width: 1200 263 | X: 70 264 | Y: 60 265 | -------------------------------------------------------------------------------- /raspimouse_gazebo/config/raspimouse_controllers.yaml: -------------------------------------------------------------------------------- 1 | controller_manager: 2 | ros__parameters: 3 | update_rate: 1000 # Hz 4 | 5 | diff_drive_controller: 6 | type: diff_drive_controller/DiffDriveController 7 | 8 | joint_state_broadcaster: 9 | type: joint_state_broadcaster/JointStateBroadcaster 10 | 11 | diff_drive_controller: 12 | ros__parameters: 13 | left_wheel_names: 14 | - left_wheel_joint 15 | 16 | right_wheel_names: 17 | - right_wheel_joint 18 | 19 | wheel_separation : 0.09 20 | wheels_per_side: 1 21 | wheel_radius : 0.024 22 | wheel_separation_multiplier : 0.95 23 | left_wheel_radius_multiplier : 1.05 24 | right_wheel_radius_multiplier : 1.05 25 | 26 | odom_frame_id: odom 27 | base_frame_id: base_footprint 28 | open_loop: false 29 | enable_odom_tf: true 30 | use_stamped_vel : false 31 | -------------------------------------------------------------------------------- /raspimouse_gazebo/gui/gui.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1000 6 | 845 7 |