B.R.Japon : Learning Robotics with ROS made easy は,
$ git clone https://github.com/ros-gopigo3/gopigo3
の後に,つぎを続ける:
$ git clone https://github.com/ros-teleop/teleop_tools
しかしこの場合は,つぎのようになる:
$ cd ~/catkin_ws
$ catkin_make
Base path: /home/ubuntu/catkin_ws
Source space: /home/ubuntu/catkin_ws/src
Build space: /home/ubuntu/catkin_ws/build
Devel space: /home/ubuntu/catkin_ws/devel
Install space: /home/ubuntu/catkin_ws/install
Multiple packages found with the same name "key_teleop":
- gopigo3/key_teleop
- teleop_tools/key_teleop
「key_teleop 重複」エラーで,make が成らない。
「key_teleop の重複」をチェック:
$ cd ~/catkin_ws/src
$ la -la gopigo3/key_teleop
-rw-rw-r-- 1 ubuntu ubuntu 198 Mar 6 08:06 CMakeLists.txt
-rw-rw-r-- 1 ubuntu ubuntu 1313 Mar 6 08:06 LICENSE
-rw-rw-r-- 1 ubuntu ubuntu 503 Mar 6 08:06 package.xml
-rw-rw-r-- 1 ubuntu ubuntu 92 Mar 6 08:06 README.md
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 6 08:06 scripts
$ la -la teleop_tools/key_teleop
-rw-rw-r-- 1 ubuntu ubuntu 987 Mar 6 08:08 CHANGELOG.rst
-rw-rw-r-- 1 ubuntu ubuntu 230 Mar 6 08:08 CMakeLists.txt
-rw-rw-r-- 1 ubuntu ubuntu 1313 Mar 6 08:08 LICENSE
-rw-rw-r-- 1 ubuntu ubuntu 518 Mar 6 08:08 package.xml
-rw-rw-r-- 1 ubuntu ubuntu 92 Mar 6 08:08 README.md
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 6 08:08 scripts
2つは同型のものである。
teleop_tools/key_teleop の方を外してみる:
$ mv teleop_tools/key_teleop ~
$ cd ~/catkin_ws
$ catkin_make
make が成る。
テストとして,つぎのコマンドを実行:
$ rosrun key_teleop key_teleop.py /key_vel:=/cmd_vel
/usr/bin/env: ‘python’: No such file or directory
「/usr/bin/python が見つからない」と言っている。
/usr/bin の中にあるのは,python3 :
$ cd /usr/bin
$ ls -la python*
lrwxrwxrwx 1 root root 9 Mar 13 2020 python3 -> python3.8
-rwxr-xr-x 1 root root 5230592 Jan 28 00:41 python3.8
lrwxrwxrwx 1 root root 34 Jan 28 00:41 python3.8-config -> aarch64-linux-gnu-python3.8-config
lrwxrwxrwx 1 root root 16 Mar 13 2020 python3-config -> python3.8-config
そこで,シンボリックリンク python → python3 を作成
$ sudo ln -s python3 python
$ ls -la python
lrwxrwxrwx 1 root root 7 Mar 6 15:59 python -> python3
再度実行
$ rosrun key_teleop key_teleop.py /key_vel:=/cmd_vel
File "/home/ubuntu/catkin_ws/src/gopigo3/key_teleop/scripts/key_teleop.py", line 63
raise ValueError, 'lineno out of bounds'
^
SyntaxError: invalid syntax
指摘された SyntaxError の部分を直す:
$ cd /catkin_ws/src/gopigo3/key_teleop/scripts
$ vi key_teleop.py
raise ValueError, 'lineno out of bounds'
→ raise ValueError('lineno out of bounds')
再度実行
$ rosrun key_teleop key_teleop.py /key_vel:=/cmd_vel
Traceback (most recent call last):
File "/home/ubuntu/catkin_ws/src/gopigo3/key_teleop/scripts/key_teleop.py", line 262, in
curses.wrapper(main)
File "/usr/lib/python3.8/curses/__init__.py", line 105, in wrapper
return func(stdscr, *args, **kwds)
File "/home/ubuntu/catkin_ws/src/gopigo3/key_teleop/scripts/key_teleop.py", line 258, in main
app.run()
File "/home/ubuntu/catkin_ws/src/gopigo3/key_teleop/scripts/key_teleop.py", line 209, in run
self._publish()
File "/home/ubuntu/catkin_ws/src/gopigo3/key_teleop/scripts/key_teleop.py", line 247, in _publish
self._interface.write_line(2, 'Linear: %f, Angular: %f' % (self._linear, self._angular))
File "/home/ubuntu/catkin_ws/src/gopigo3/key_teleop/scripts/key_teleop.py", line 69, in write_line
self._screen.addstr(y, x, text)
TypeError: integer argument expected, got float
埒があかない。
ros-gopigo3 の key_teleop が python3 に対応してない,というわけだ。
よって,teleop_tools の key_teleop を外すのではなく,gopigo3 の key_teleop を削除し,teleop_tools の key_teleop をこれに換えることにする。
~ $ rm -rf catkin_ws/srd/gopigo3/key_teleop
~ $ mv key_teleop catkin_ws/srd/gopigo3
再度ビルド。
そして,先に作成したシンボリックリンク
を削除。
再度実行
$ rosrun key_teleop key_teleop.py /key_vel:=/cmd_vel
今度はOK
|