Up key_teleop トラブル 作成: 2021-03-06
更新: 2021-03-06


    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* <xmp>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

    再度実行 <xmp>$ 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 <module> 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
    再度ビルド。

    そして,先に作成したシンボリックリンク
      python -> python3
    を削除。


    再度実行
    $ rosrun key_teleop key_teleop.py /key_vel:=/cmd_vel
    今度はOK