当前位置:   article > 正文

teledyne wayfinder 串口驱动程序

teledyne wayfinder 串口驱动程序

https://github.com/Marcos-Seafloor/Wayfinder

dvl驱动代码解析

运行data_example.py
可以在data_example.py中的

def update_data(output_data: OutputData, obj):
  • 1

加入输出dvl信息的语句。
参数OutputData来自于wayfinder/dvl/system.py中,可以查看定义的各个dvl参数并输出。
output_data.vel_x是double类型

时间戳格式转换Excel

=TEXT((A2/1000000000+8*3600)/86400+70*365+19,"yyyy/mm/dd hh:mm:ss.000")
  • 1
  • 报错No module named ‘serial’

在win系统下可以运行后,在ubuntu18.04中运行报错

 File "/home/lixuemeng/catkin_ws/src/Wayfinder/dvl/util.py", line 9, in <module>
    import serial
ModuleNotFoundError: No module named 'serial'
  • 1
  • 2
  • 3

已经用pip install pyserial 和pip install serial安装了
但仍然报错
直接在Vscode中运行import serial会报错

import serial
import-im6.q16: not authorized `serial' @ error/constitute.c/WriteImage/1037.
  • 1
  • 2

unbuntu系统中默认python2.7,安装了python3.7,但一直无法更换python默认版本,猜测是serial安装到了python2.7下面
使用sudo apt install python3-serial

成功解决“No module named ‘serial’”

  • 报错 No module named ‘numpy’
    在这里插入图片描述
    使用以下安装完成后
sudo apt install python3-numpy
  • 1

继续报错cannot import name ‘multiarray’ from ‘numpy.core’

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/numpy/core/__init__.py", line 16, in <module>
    from . import multiarray
ImportError: cannot import name 'multiarray' from 'numpy.core' (/usr/lib/python3/dist-packages/numpy/core/__init__.py)
  • 1
  • 2
  • 3
  • 4

不成功的解决方法:

pip uninstall python3-numpy	
pip uninstall numpy
sudo pip3 uninstall numpy
  • 1
  • 2
  • 3

参考链接https://github.com/numpy/numpy/issues/10714
使用pip install --upgrade --force-reinstall numpy
在这里插入图片描述
查看numpy(?怎么还是在python2.7里)

pip show numpy
  • 1

在这里插入图片描述
?怎么不同地方查看python版本不一样 有2.7 3.7 3.9?
在这里插入图片描述
在这里插入图片描述

接收ros消息

ROS(一):使用python创建消息发布及接收node
按照以上教程尝试,可能遇到以下问题:

  • 找不到talker.py
    可能是因为没有catkin_make
    可能是因为没有赋予文件执行权限,需要chmod +x listener.py

  • /usr/bin/env: ‘python #此行为了让python可以检测到’: No such file or directory
    代码前面的#!/usr/bin/env python3.7 等语句不要加中文注释

  • ModuleNotFoundError: No module named ‘rospkg’
    运行python文件时报错No module named ‘rospkg‘的解决方法
    需要在第一句指定运行的Python环境为3.7
    且重新创建软连接后,需要重新catkin_make

talker()定义中,在终端输出和publish消息的代码如下

        hello_str = "hello world %s" % rospy.get_time()
        rospy.loginfo(hello_str)
        pub.publish(hello_str)
  • 1
  • 2
  • 3

如果想增加输出的变量,需更改hello_str,要在“”内增加%s,各%s中间用逗号分割,且外部的各个变量用括号括住,如下

a=12.34
hello_str ="  hello world %s,%s" % (rospy.get_time(),a)
rospy.loginfo(hello_str)
pub.publish(hello_str)
  • 1
  • 2
  • 3
  • 4

输出结果为

[INFO] [1686286758.054930]:   hello world  1686286758.0546474,12.34
  • 1

如下运行listener.py可以听到talker.py发布的消息(如talker没发布,则听不到消息)
在这里插入图片描述

自定义ROS消息格式

自定义一个订阅消息类型,让订阅者和发布者通过这个结构进行数据通信。
话题消息是以.msg结尾的文件,是一个用于描述ROS话题信息简单文本文件,用于生成不同语言消息的源代码。

msg文件一般存放在package下msg文件夹下,其数据类型可以是:

int8, int16, int32, int64 (unit*)
float32, float64
string
time, duration
其他msg文件
可变数组array[]和固定长度数组array[C]
————————————————————————————

UUVsimulator运行仿真时,采集到的DVL消息名称是/rexrov/dvl,格式文件是uuv_sensor_plugins/uuv_sensor_ros_plugins_msgs/msg/dvl.msg,
在这里插入图片描述

1.创建msg文件

在package目录创建一个msg文件夹,并创建自己的自定义消息(本包中使用UUVsimulator定义的DVL.msg文件):
2.修改package.xml描述
package.xml添加固定的片段:

 <build_depend>message_generation</build_depend>
 <exec_depend>message_runtime</exec_depend>
  • 1
  • 2

分别用于编译时信息产生依赖和用于执行时信息依赖
在这里插入图片描述

3.增加message_generation生成时依赖
在find_package中增加

message generation
  • 1

在这里插入图片描述

4.增加message_runtime运行时依赖
catkin_package命令增加

message_runtime
  • 1

在这里插入图片描述5.增加message文件
add_message_files命令增加

DVL.msg
DVLBeam.mag
  • 1
  • 2

在这里插入图片描述

6.增加编译message本身时的依赖
generate_messages命令增加了:

std_msgs
  • 1

在这里插入图片描述

7.回到工作空间根目录,使用catkin_make进行编译,如果出现以下打印,说明一切正常:
在这里插入图片描述


Errors << ros_dvl:check /home/misclxm/miscauv_ws/logs/ros_dvl/build.check.003.log
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by “message” with any
of the following names:

messageConfig.cmake
message-config.cmake
  • 1
  • 2

Add the installation prefix of “message” to CMAKE_PREFIX_PATH or set
“message_DIR” to a directory containing one of the above files. If
“message” provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
CMakeLists.txt:10 (find_package)

事实上,对于C++而言,编译器帮我们自动编写一个头文件:sensor.h,文件位于workspace/devel/include中,通过引用头文件就可以使用这个自定义数据了。

8.Python使用自定义消息
假设自定义消息包名称为ros_DVL, 消息文件为DVL.msg(消息类型名即为DVL)
注意:from后面是自定义消息所在package名称+.msg,一定不要忘了.msg

from ros_dvl.msg import DVL
  • 1
  • 报错Import [ros_dvl] could not be resolved Pylance(reportMissingImports)
    Pylance未找到自定义模块的地址,可以通过在settings.json文件中添加extraPaths来解决。
    通过Shift+Ctrl+P打开设置栏,输入settings后找到Perference: Open Settings (JSON);在settings.json文件中加入
"python.analysis.extraPaths": [
        "./src",// 自定义模块的相对路径,可多个,可绝对路径  
        "./util"
           ],
  • 1
  • 2
  • 3
  • 4

VS Code中Import [module] could not be resolved Pylance(reportMissingImports)解决方案

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/364022
推荐阅读
相关标签
  

闽ICP备14008679号