ROS

how to install ros kinetic to raspbian 9.4 stretch
ROS kineticをraspbian 9.4 stretchにインストールする方法


sudo apt-get install dirmngr

sudo apt-get update
sudo apt-get upgrade

sudo rosdep init
rosdep update

mkdir -p ~/ros_catkin_ws
cd ~/ros_catkin_ws

rosinstall_generator desktop –rosdistro kinetic –deps –wet-only –tar > kinetic-desktop-wet.rosinstall
wstool init src kinetic-desktop-wet.rosinstall
-> wstool update -j4 -t src


how to check ROS version; ROSバージョンの確かめ方


rosversion -d


making catkin_ws (catkin_wsの作り方):


mkdir -p ~/ros_catkin_ws/external_src
cd ~/ros_catkin_ws/external_src
wget http://sourceforge.net/projects/assimp/files/assimp-3.1/assimp-3.1.1_no_test_models.zip/download -O assimp-3.1.1_no_test_models.zip
unzip assimp-3.1.1_no_test_models.zip
cd assimp-3.1.1
cmake .
make -> X (not able to make; make出来ませんでした)
rosinstall_generator desktop –rosdistro kinetic –deps –wet-only –exclude collada_parser collada_urdf –tar > kinetic-desktop-wet.rosinstall

cd ~/ros_catkin_ws
rosdep install -y –from-paths src –ignore-src –rosdistro kinetic -r –os=debian:stretch
sudo ./src/catkin/bin/catkin_make_isolated –install -DCMAKE_BUILD_TYPE=Release –install-space /opt/ros/kinetic

source /opt/ros/kinetic/setup.bash
(option; オプション):
echo “source /opt/ros/kinetic/setup.bash” >> ~/.bashrc

cd ~/ros_catkin_ws
rosinstall_generator ros_comm ros_control joystick_drivers –rosdistro kinetic –deps –wet-only –tar > kinetic-custom_ros.rosinstall

wstool merge -t src kinetic-custom_ros.rosinstall
wstool update -t src

sudo ./src/catkin/bin/catkin_make_isolated –install -DCMAKE_BUILD_TYPE=Release –install-space /opt/ros/kinetic
-> X (not able to run; 動かせませんでした)
sudo ./src/catkin/bin/catkin_make_isolated –install -DCMAKE_BUILD_TYPE=Release –install-space /opt/ros/kinetic -j4

rosinstall_generator desktop –rosdistro kinetic –deps –wet-only –exclude collada_parser collada_urdf –tar > kinetic-desktop-wet.rosinstall
rosdep install -y –from-paths src –ignore-src –rosdistro kinetic -r –os=debian:stretch

sudo ./src/catkin/bin/catkin_make_isolated –install -DCMAKE_BUILD_TYPE=Release –install-space /opt/ros/kinetic -j2

—–
[100%] Building CXX object modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o
[100%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o
-> when running like in the up indication wait over 20 min. 上みたいな表示が出る場合20分間以上待機します

how to run turtle-sim (turtle simの動かし方):


roscore
sudo apt-get install ros-kinetic-turtlesim
-> package not found
rosrun turtlesim turtlesim_node

rosrun after running roscore “IN A NEW TERMINAL”
roscoreを動かした後、
「新しい端末で」、rosrunします。

端末 (ROSのバージョン; kinetic)
Terminal (rosversion; kinetic)

turtlesim動作結果
turtlesim Conduct Result

Virtual Box上のUbuntu 16.04にROS kineticをインストール
Installing ROS kinetic at Ubuntu 16.04 on Virtual Box

Raspberry Pi上にlubuntu?をインストール
Installing lubuntu? on Raspberry Pi.

2. Gazebo・Rviz・Turtle bot 3について


ある事を目的に、私が作ったメモです。

まあ、著作権が普通に私にありますし、何も結んでもいないため、用途が何か、とかを述べなければ、載せてよいと思います。

(一応、配慮して、すぐには、載せませんでしたが)

# 環境:
Virtual Box 6.1

Ubuntu 18.04.6
ROS melodic

# インストール・設定

ROS melodicをインストールする。 (Ubuntu 20上には、通常入らないみたいである)

http://wiki.ros.org/melodic/Installation/Ubuntu

確認として、普通のturtle simを動かすのと、ROSのPub Sub通信を試して出来るようにしておく。

> rosrun turtlesim turtlesim_node

次のリンクを参考に、turtlebot3をインストールする。 (burgerを設定した)

https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/

次のリンクを参考に、Gazeboをインストールする。
https://gazebosim.org/tutorials?tut=ros_installing&cat=connect_ros

Gazebo起動時に真っ暗な画面が出た時には、次のコマンドを~./bashrcの最後に追加する。

export LIBGL_ALWAYS_SOFTWARE=1

次のリンクを参考に、rvizをインストールする。
https://symfoware.blog.fc2.com/blog-entry-2285.html

>>>>> 障害物にぶつからずに動き続ける方法 (1)

次を参考に、ros_practiceパッケージを作成する。
https://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/ROS/index3.html#autonomous

>>>>> 次を、それぞれ、別の「端末」で起動し動作を確認する。

roslaunch turtlebot3_gazebo turtlebot3_world.launch

rosrun ros_practice auto.py ※※※ (PG 1; このPGは、ネット情報を参考に自作したが非公開) ***

auto.pyは別にPGを示す。


>>>>> 障害物にぶつからずに動き続ける方法 (2)

次を参考にmove_baseに必要なプログラムをビルドする。

次のPGを動かす。

*** (PG2; このPGも、ネット情報を参考に自作したが非公開) ***

自律移動パッケージの準備
https://moriokalab.com/news/103

melodic以前は、古いバージョンをインストールする。
https://tomson784.github.io/ros_practice/Navigation/move_base.html

> git clone https://github.com/ros-planning/navigation.git -b 1.16.7 –depth 1

> sudo apt install -y ros-melodic-move-base-msgs ros-melodic-amcl ros-melodic-joy ros-melodic-move-base ros-melodic-urg-node ros-melodic-map-server

次を参考に、map.pgmとmap.yamlを作成する
https://potblog.hatenablog.com/entry/2018/05/17/233426

map作成には次のコマンドを入力してスキャンする等の方法がある。
> roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
> roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

mapは次の場所に保存する。
$ mkdir ~/maps
$ rosrun map_server map_saver -f ~/maps/world_map

次のページを参考にGoalを設定する
move_baseのGoalを設定
https://daily-tech.hatenablog.com/entry/2017/02/11/214336

>>> 「障害物にぶつからずに動き続ける」PGを動かすのに使うコマンド

> 起動
( 0. <必要に応じて>
roscore
)

1. Gazeboを起動する
roslaunch turtlebot3_gazebo turtlebot3_world.launch

2. RVizをmap付きで起動する
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml

rosrun rviz rviz -d `rospack find turtlebot3_navigation`/rviz/turtlebot3_nav.rviz

3. PG 2 (/home/username/catkin_ws/src/simple_goal_generator/src/simple_goal_generator.cppを動かす)
rosrun simple_goal_generator simple_goal_generator_node


その他、必要に応じて打つとよいコマンド

> roscore等の関係でGazeboが起動しなくなった場合は次を実行
killall gzclient
killall gzserver

> turtlebot3標準Worldを起動
roslaunch turtlebot3_gazebo turtlebot3_world.launch

(
> turtlebot3 empty worldを起動
roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

>> simulation
roslaunch turtlebot3_gazebo turtlebot3_simulation.launch
)

===========================

参考情報:

catkin_makeでビルド出来ない場合は、catkin_make_isolatedを使ってビルドする

インストール時のエラー対処は次のようにする。
https://answers.ros.org/question/305640/cmake-warning-has-occurred/

他参考サイト:
https://github.com/project-srs/ros_lecture

https://wiki.ros.org/navigation/Tutorials/RobotSetup

https://qiita.com/protocol1964/items/1e63aebddd7d5bfd0d1b

https://demura.net/robot/ros2/20761.html

https://qiita.com/MoriKen/items/0b75ab291ab0d95c37c2

https://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/ROS/index35.html#prog1

https://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/ROS/index4.html

https://qiita.com/MoriKen/items/8387b279e968368783f1

https://qiita.com/MoriKen/items/d5cd6208143d6c40caff

https://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/ROS/index3.html#autonomous

https://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/ROS/index35.html

https://stackoverflow.com/questions/58952416/how-to-pass-values-from-one-subscribers-callback-function-to-another-in-rosnode

https://stackoverflow.com/questions/58952416/how-to-pass-values-from-one-subscribers-callback-function-to-another-in-rosnode

https://question2430.rssing.com/chan-39251146/article21-live.html

https://robo-marc.github.io/navigation_documents/costmap_2d.html

http://wiki.ros.org/tf

https://answers.ros.org/question/337695/pointing-turtlebot-to-the-target-position-before-moving/

http://docs.ros.org/en/groovy/api/moveit_ros_planning_interface/html/group__set__pose__goal.html

https://question2430.rssing.com/chan-39251146/article21-live.html

http://wiki.ros.org/move_base

http://wiki.ros.org/tf

http://docs.ros.org/en/groovy/api/moveit_ros_planning_interface/html/group__set__pose__goal.html

https://demura.net/education/lecture/14011.html