探测器常见问题解答

气体探测器(布控球)的常见问题, 主要是接入商和平台提供商的疑问解答。咨询技术支持前可以先看一下。


主界面上的实时浓度数据为什么不显示了?

我们的最新系列布控球采用分体设计:气体传感器部分安装在手持式设备里,方便现场工人随身携带着进入作业现场。而数据接收、传输、视频录像等功能放在球机内,用于跟外部平台通讯。在只有球机开机,手持设备关闭的情况下球机上是没有数据显示的。

所以球机主界面没数据时可以先看手持设备是否开机,如果开机了检查一下手持设备跟球机距离是否过远,并且确认手持设备跟球机是否是正确的配对,不要拿错。

Read more »

TongjiAI Media Service Instruction

Realtime Streaming

1. Request streaming from devices.

Devices are designed to be accesed via socket.io. By default a device gets itself registered at the official socket.io server once it is connected to the internet, either via wirelss LANs(aka Wifi) or 4G/5G cellular networks. Clients who are willing to request the realtime video streaming should connect themselves to the socket.io server and join the same room with the target devices, which is followed by the steps below:

Read more »

  • 将以下脚本作为库文件导入前端项目中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { io } from "socket.io-client";
import playRecord from "./playRecord";

const socketIOInit = async (sio_url, setRecList) => {
const socketio = io(sio_url);
let pc;
let heartbeat_timer;

socketio.on("connect", () => {
console.log("connected");
});

socketio.on("create", () => {
socketio.emit("auth");
socketio.emit("heartbeatping");
console.log("created");
});
socketio.on("bridge", async (pathid) => {
setTimeout(() => {
setRemoteStream(
`https://tongjiai.org:8088/channel/${pathid}/index.m3u8`
);
}, 3000);
});
socketio.on("join", () => {
socketio.emit("auth");
socketio.emit("heartbeatping");
socketio.emit("getRecList");
console.log("joined");
});

// client-side custom heartbeat check with an interval of 10 seconds.
socketio.on("heartbeatpong", () => {
if (heartbeat_timer) {
clearTimeout(heartbeat_timer);
}
heartbeat_timer = setTimeout(() => {
socketio.emit("heartbeatping");
socketio.emit("getRecList");
}, 10000);
});

// recList handler
socketio.on("recList", (list) => {
console.log("list:",list);
setRecList(list);
});

socketio.on("hangup", () => {
console.log("hangup");
});
return socketio;
};
Read more »

偶尔发现的简便小技巧随手分享。
使用场景:家庭PC,Windows系统,希望搭网络服务(ssh/transmission/nginx等),或者远程开发平台(go/python/nodejs等)

硬件要求:家用宽带最好有公网ip(包含ddns)且路由器可以转发端口。如果没有的话可以用云服务商那儿买的vps搭frp或ssh tunnel。
如果有需要可以自行设置wake-on-lan方便远程开机(我自己是24小时开机所以没用上这个)。

一、装VMware Player。对,免费的Player就够;
二、新建一个Linux的guest,网络连接选桥接(bridged)。装好server版系统(不需要gui),发行版随意。
三、在guest机上装你需要的服务,设置好systemctl enable。在路由或vps上设好端口转发。


以上三步是常规操作不多赘述详细操作,有疑问查阅之前的文章


Read more »

一、安装 Nvidia SDK manager

根据 Nvidia官网 教程说明,先下载用于 Ubuntu (或者其他当前使用的Linux发行版)的安装包。其中 Ubuntu版的下载地址如下:
https://developer.nvidia.com/sdkmanager_deb
注意:使用该地址下载可能需要先注册Nvidia用户,注册步骤请按照官网提示一步步进行,此处不多赘述。
下载完成后打开终端 Terminal,键入以下命令安装sdkmanager(此处假设下载好的.deb安装包位于 ~/Downloads/目录,该目录是大多数浏览器的默认下载目录,如果你手动修改过下载保存目录,请自行替换):

$ cd ~/Downloads
$ sudo apt install ./sdkmanager*.deb -y

等待安装完毕后键入以下命令打开刚安装好的sdkmanager:

$ sdkmanager

二、刷机

进入SDK Manager 的GUI图形界面后取消勾选 HARDWARE CONFIGURATION 栏中的 Host Machine 选勾,再点击 Target Hardware方框右下角的三个点 ...,选择Jetson TX2 models

Read more »

同济智能监测平台 TJAI-Platform

开发文档

平台结构概述

同济监测平台(下文简称平台)采用 NextJS 作为开发技术栈。基于 NextJS 的前后端一体化和服务器端预渲染(Server Side Rendering) 特性,可以方便地进行设备端传感器数据上传和客户端页面实时刷新。

NextJS 依赖 Node.js 环境和 ReactJS 前端框架,因此开发环境上需要安装好 Node.js 和 npm 包管理工具。在 Ubuntu 20.04 LTS 版本下安装nodejs 方法如下

1
2
$ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
$ sudo apt install -y nodejs
Read more »

探测器数据外发结构概述

探测器会在有网络连接的前提下定时向预设的网络接口以 HTTP 协议的格式发送 POST 请求,用以向网站传递设备信息以及实时气体浓度数据。

目前设备外发数据的接口有以下五种:

  • token 请求接口:
    http://[hostname:port]/[apipath]/getToken
    用以发送用户名密码验证信息并获取返回的验证 token 。该 token 将被用于以下另四种 api 接口的身份验证。

  • 设备信息上传接口:
    http://[hostname:port]/[apipath]/deviceInfo
    用于上传探测器设备的设备名称、序列号、经纬度位置信息以及所属用户。

  • 摄像机信息上传接口:
    http://[hostname:port]/[apipath]/cameraSource
    用于上传摄像机大的 camera id、摄像机画面的远程获取 url 和所属设备。

  • 传感器信息上传接口:
    http://[hostname:port]/[apipath]/sensorInfoUpdate
    用于传递设备上气体浓度传感器的名称、代号、类别、上下限阈值和所属设备。

  • 实时气体浓度数据上传接口:
    http://[hostname:port]/[apipath]/realtimeDataUpload
    用于上传设备中所有气体传感器的实时浓度数据。该接口的一般会同时上传所有气体浓度数据,因此发送的数据结构是数组形式。

Read more »

背景

Qt 的位置信息库 QtPositioning 中获取位置信息的输入源设置方法为:

QGeoPositionInfoSource::createDefaultSource()

该方法默认选择当前系统的位置信息提供服务获取经纬度坐标等。
我的系统是树莓派 Raspbian,因此安装了 geoclue2 作为位置服务,用上述方法创建位置信息源后开始获取树莓派的经纬度,再用 GeocodeModel 从 OpenStreetMap 处查询经纬度对应的实际地址。

以上是自研发软件的一些背景。

起因

在开发环境中调通了地址显示的功能后,编译部署到树莓派上,发现数据源一直是 Null 。但是 geoclue2 很确定是正常工作的,不管是示例程序还是开发环境都明确显示位置源没有问题,但就是在实际程序内不显示位置。

开 qDebug() 打印,supportedPositioningMethods 是正确的。终端给出的是这么一行提示:

libEGL warning: DRI2: failed to authenticate
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
qt.positioning.geoclue2: Unable to start the client: "org.freedesktop.DBus.Error.AccessDenied" "An authorization request is already pending"
qml: Source error: 0
qt.positioning.geoclue2: Unable to start the client: "org.freedesktop.DBus.Error.AccessDenied" "'[myapp]' disallowed, no agent for UID 0"

很显然,qt.positioning.geoclue2 报错那两行跟获取不到位置信息的错误高度相关,于是理所当然的从这里下手了。

Read more »

目录

  1. 软件开发:机器学习、ROS、Linux以及C++和Python编程语言
    1.1 Linux操作系统
    1.2 ROS机器人操作系统
    1.3 Python编程语言
    1.4 机器学习与神经网络

在科研、教学方面的应用

空地协同系统除了在生产、办公等实际场景的应用以外,同样也适合用于辅助各高校的科研和教学任务。本系统涉及较多前沿技术,包括机械、硬件设计以及软件开发等科目,以本系统作为教学或科研工具将有效提高学生或科研人员在这三个科目的学习或研究进度。

1. 软件开发:机器学习、ROS、Linux以及C++和Python编程语言

要熟练掌握空地协同系统的使用,至少需要熟练掌握Linux操作系统、一定程度地了解ROS机器人操作系统;而要在现有的系统之上做二次开发则需要熟练掌握ROS,会写C++/Python并且了解机器学习相关的知识。这些都是目前前沿领域非常热门且对相关人才需求度极高的内容。

1.1 Linux操作系统

Linus Torvaldo 基于unix 基本架构重新编码的Linux系统是全世界被最为广泛使用的计算机操作系统,没有之一。小至掌上芯片的嵌入系统,大至超级计算机的操作系统,Linux都能极好地胜任。因此Linux系统的熟练使用是每一个数字行业从业人员都不可或缺的基本技能。

对于操作系统的学习和精通最有效的途径毫无疑问是长时间的上手使用。Linux是一项工具而不能算“专业知识”。这也就是说我们并不应该抱着“为了学用Linux而去用Linux”的心态去上手使用Linux系统——Linux本身就像是数字行业的电动螺丝刀,用熟了电动螺丝刀可以让大大提升你在机械、工程领域的实际工作。你也并不真的需要去专门学习如何使用电动螺丝刀,因为你在拧螺丝的时候给你从手工螺丝刀换电动螺丝刀是能极大提升你的操作体验的,因此对这样“基本工具”的使用技巧应该跟其他更具体的作业任务同步进行——你动手装配一台工程机械,在中途给你把手工螺丝刀换成电动螺丝刀,你的工作进度会大大加快,同时你对电动螺丝刀的使用熟练度也必然随之增长。Linux是同样的道理,不管是软件开发、安全运维、网站搭建还是机器人操作编程,你在做这些具体的工作时候自然会发现Linux的优越性,然后随着工作的进行你的Linux技巧也必然提升。

空地协同系统的操作使用以及二次开发正好提供了这样一项具体的工作任务。对ROS系统的操作开发离不开Linux;对各种单片机和嵌入式芯片的通讯编程需要Linux;编写上层应用、搭建网页服务端、操控以及开发无人机认同同样必须用到Linux。在这实践操作的强烈驱动下,学生和研究人员对Linux系统的熟练度必然能快速成长。

同时,本文空地协同操作手册以及更多的空地协同相关资料也包含了大量的Linux使用的基础讲解和案例。另外,研究院也提供技术支持和人工教学,帮助客户全面掌握所需的Linux技巧和知识。

1.2 ROS机器人操作系统

ROS 是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。在某些方面ROS相当于一种“机器人框架(robot frameworks)”类似的“机器人框架”有:Player,YARP,Orocos,CARMEN,Orca,MOOS和 Microsoft Robotics Studio。

Read more »

目录

1 - 空地协同系统介绍
1.1 背景
1.2 系统简介
1.3 工作流程
1.4 关键技术
1.5 推广应用场景
1.6 小结

2 - AGV小车操作手册
2.1 产品概述
2.2 产品介绍
2.3 产品使用说明
2.4 安全使用注意事项

3 - 无人机(Dji RobomasterTT)操作手册
3.1 虚拟机与Linux系统的创建
3.2 安装Python开发环境
3.3 Robomaster Tello Talent使用介绍
3.4 YOLOv3视觉识别框架
3.5 样例

1 - 空地协同系统简介

Read more »
0%