当前位置:网站首页>【CoppeliaSim4.3】C#调用 remoteApi控制场景中UR5
【CoppeliaSim4.3】C#调用 remoteApi控制场景中UR5
2022-07-03 07:23:00 【十年一梦实验室】

截图
视频演示
笔记:
一、场景脚本中添加代码,开启服务器:
function sysCall_init()
-- Start remote API server
local port=3000
simRemoteApi.start(port)
corout=coroutine.create(coroutineMain)
end二、C#客户度连接服务器,并获取关节句柄
_id = Api.Connect(textBoxAddress.Text, (int)numericUpDownPort.Value);
if (Api.IsConnected(_id))
{
for (int i = 0; i < _jointHandle.Length; i++)
{
_jointHandle[i] = Api.GetObjectHandle(_id, _jointPrefix + (i + 1));
}
}三、从安装目录拷贝include和remoteApi到C#项目,生成dll、lib

目录源位置

目录目标位置


生成的库拷贝到C#项目编译输出目录
四、C#调用C++库
using System;
using System.Runtime.InteropServices;
namespace CoppeliaSimCSharpAPI.TestForm
{
internal class Api
{
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int Connect(string address, int port);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int Disconnect(int id);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern bool IsConnected(int id);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int GetJointPosition(int id, int[] jointHandle, float[] position, int jointCount);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int GetObjectHandle(int id, string objectName);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int MoveJoint(int id, int[] jointHandle, float[] position, bool inTorqueForceMode, int jointCount);
[DllImport("CoppeliaSimCSharpAPI.dll")]
public static extern int SendInfo(int id, string message, bool blocking);
}
}五、移动机械臂和获取位置
private void buttonMove_Click(object sender, EventArgs e)
{
var position = new float[]
{
(float)numericUpDownJ1.Value,
(float)numericUpDownJ2.Value,
(float)numericUpDownJ3.Value,
(float)numericUpDownJ4.Value,
(float)numericUpDownJ5.Value,
(float)numericUpDownJ6.Value
};
Api.MoveJoint(_id, _jointHandle, position, true, _jointHandle.Length);
}
private void buttonGetPosition_Click(object sender, EventArgs e)
{
var position = new float[6];
Api.GetJointPosition(_id, _jointHandle, position, _jointHandle.Length);
MessageBox.Show($"{position[0]}\r\n" +
$"{position[1]}\r\n" +
$"{position[2]}\r\n" +
$"{position[3]}\r\n" +
$"{position[4]}\r\n" +
$"{position[5]}",
"Now position");
}The End
边栏推荐
- [untitled]
- 深度学习参数初始化(一)Xavier初始化 含代码
- Lombok -- simplify code
- Download address collection of various versions of devaexpress
- Jeecg request URL signature
- Realize the reuse of components with different routing parameters and monitor the changes of routing parameters
- 【开发笔记】基于机智云4G转接板GC211的设备上云APP控制
- Advanced API (use of file class)
- c语言指针的概念
- Recursion, Fibonacci sequence
猜你喜欢

691. Cube IV

VMWare网络模式-桥接,Host-Only,NAT网络

Map interface and method

The embodiment of generics in inheritance and wildcards

Store WordPress media content on 4everland to complete decentralized storage

7.2 brush two questions

Interfaces and related concepts

为什么说数据服务化是下一代数据中台的方向?

c语言指针的概念

Recursion, Fibonacci sequence
随机推荐
Pat grade a real problem 1166
II. D3.js draw a simple figure -- circle
Various postures of CS without online line
URL programming
[solved] win10 cannot find a solution to the local group policy editor
Flask Foundation
Store WordPress media content on 4everland to complete decentralized storage
Docker builds MySQL: the specified path of version 5.7 cannot be mounted.
4279. Cartesian tree
Advanced API (byte stream & buffer stream)
[HCAI] learning summary OSI model
PgSQL converts string to double type (to_number())
Advanced API (batch image Download & socket dialog)
20220319
JUC forkjoinpool branch merge framework - work theft
The underlying mechanism of advertising on websites
Margin left: -100% understanding in the Grail layout
sharepoint 2007 versions
不出网上线CS的各种姿势
Arduino Serial系列函数 有关print read 的总结