Skip to content

Commit 6e304e9

Browse files
committed
feat: add fixed jaw and correct gripper limits
- Add fixed_jaw joint and link for opposing jaw surface - Change gripper lower limit from 10° to -10° (matching official URDF) - Fix naming conflict: rename bridge to feetech_bridge, controller to feetech_controller - Update bb dependency to 0.14.0
1 parent a4f3e90 commit 6e304e9

3 files changed

Lines changed: 52 additions & 14 deletions

File tree

lib/bb/example/so101/robot.ex

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ defmodule BB.Example.SO101.Robot do
3232
use BB
3333

3434
parameters do
35-
bridge(:feetech, {BB.Servo.Feetech.Bridge, controller: :feetech}, simulation: :mock)
35+
bridge(:feetech_bridge, {BB.Servo.Feetech.Bridge, controller: :feetech_controller},
36+
simulation: :mock
37+
)
3638

3739
group :config do
3840
group :feetech do
@@ -84,7 +86,7 @@ defmodule BB.Example.SO101.Robot do
8486

8587
controllers do
8688
controller(
87-
:feetech,
89+
:feetech_controller,
8890
{BB.Servo.Feetech.Controller,
8991
port: param([:config, :feetech, :device]),
9092
baud_rate: param([:config, :feetech, :baud_rate]),
@@ -134,7 +136,7 @@ defmodule BB.Example.SO101.Robot do
134136

135137
actuator(
136138
:shoulder_pan_servo,
137-
{BB.Servo.Feetech.Actuator, servo_id: 1, controller: :feetech}
139+
{BB.Servo.Feetech.Actuator, servo_id: 1, controller: :feetech_controller}
138140
)
139141

140142
link :shoulder_link do
@@ -181,7 +183,7 @@ defmodule BB.Example.SO101.Robot do
181183

182184
actuator(
183185
:shoulder_lift_servo,
184-
{BB.Servo.Feetech.Actuator, servo_id: 2, controller: :feetech}
186+
{BB.Servo.Feetech.Actuator, servo_id: 2, controller: :feetech_controller}
185187
)
186188

187189
link :upper_arm_link do
@@ -228,7 +230,7 @@ defmodule BB.Example.SO101.Robot do
228230

229231
actuator(
230232
:elbow_servo,
231-
{BB.Servo.Feetech.Actuator, servo_id: 3, controller: :feetech}
233+
{BB.Servo.Feetech.Actuator, servo_id: 3, controller: :feetech_controller}
232234
)
233235

234236
link :forearm_link do
@@ -275,7 +277,7 @@ defmodule BB.Example.SO101.Robot do
275277

276278
actuator(
277279
:wrist_flex_servo,
278-
{BB.Servo.Feetech.Actuator, servo_id: 4, controller: :feetech}
280+
{BB.Servo.Feetech.Actuator, servo_id: 4, controller: :feetech_controller}
279281
)
280282

281283
link :wrist_link do
@@ -322,7 +324,8 @@ defmodule BB.Example.SO101.Robot do
322324

323325
actuator(
324326
:wrist_roll_servo,
325-
{BB.Servo.Feetech.Actuator, servo_id: 5, controller: :feetech}
327+
{BB.Servo.Feetech.Actuator,
328+
servo_id: 5, controller: :feetech_controller}
326329
)
327330

328331
link :gripper_link do
@@ -361,15 +364,16 @@ defmodule BB.Example.SO101.Robot do
361364
end
362365

363366
limit do
364-
lower(~u(10 degree))
367+
lower(~u(-10 degree))
365368
upper(~u(100 degree))
366369
effort(~u(2.5 newton_meter))
367370
velocity(~u(360 degree_per_second))
368371
end
369372

370373
actuator(
371374
:gripper_servo,
372-
{BB.Servo.Feetech.Actuator, servo_id: 6, controller: :feetech}
375+
{BB.Servo.Feetech.Actuator,
376+
servo_id: 6, controller: :feetech_controller}
373377
)
374378

375379
link :jaw_link do
@@ -407,6 +411,40 @@ defmodule BB.Example.SO101.Robot do
407411
end
408412
end
409413
end
414+
415+
joint :fixed_jaw do
416+
type(:fixed)
417+
418+
origin do
419+
x(~u(0.04 meter))
420+
z(~u(-0.010 meter))
421+
end
422+
423+
link :fixed_jaw_link do
424+
visual do
425+
origin do
426+
x(~u(0.029 meter))
427+
end
428+
429+
box do
430+
x(~u(0.058 meter))
431+
y(~u(0.03 meter))
432+
z(~u(0.01 meter))
433+
end
434+
435+
material do
436+
name(:fixed_jaw_grey)
437+
438+
color do
439+
red(0.4)
440+
green(0.4)
441+
blue(0.4)
442+
alpha(1.0)
443+
end
444+
end
445+
end
446+
end
447+
end
410448
end
411449
end
412450
end

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ defmodule BB.Example.SO101.MixProject do
4444
# Type `mix help deps` for examples and options.
4545
defp deps do
4646
[
47-
{:bb, bb_dep("~> 0.13")},
47+
{:bb, bb_dep("~> 0.14")},
4848
{:bb_ik_dls, bb_dep("~> 0.3", :bb_ik_dls)},
4949
{:bb_liveview, bb_dep("~> 0.2", :bb_liveview)},
5050
{:bb_reactor, bb_dep("~> 0.2", :bb_reactor)},

mix.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
%{
22
"bandit": {:hex, :bandit, "1.10.1", "6b1f8609d947ae2a74da5bba8aee938c94348634e54e5625eef622ca0bbbb062", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "4b4c35f273030e44268ace53bf3d5991dfc385c77374244e2f960876547671aa"},
3-
"bb": {:hex, :bb, "0.13.1", "e329f87fbab12876141d8ecc9e5f279ddc527ea961c7cb079b0a4b80660259df", [:mix], [{:ease, "~> 1.0", [hex: :ease, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.36", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_cldr_units, "~> 3.0", [hex: :ex_cldr_units, repo: "hexpm", optional: false]}, {:igniter, "~> 0.6", [hex: :igniter, repo: "hexpm", optional: true]}, {:nx, "~> 0.10", [hex: :nx, repo: "hexpm", optional: false]}, {:spark, "~> 2.3", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}], "hexpm", "5c24737a4559aa491911bd9214ea50550bc4ddc49f1c73f91335f7bfe41f239e"},
3+
"bb": {:hex, :bb, "0.14.0", "f7cec9afe4a10038754537b5d8e101ef110299d1bea5bad0b87c22e9c43b5f00", [:mix], [{:ease, "~> 1.0", [hex: :ease, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.36", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_cldr_units, "~> 3.0", [hex: :ex_cldr_units, repo: "hexpm", optional: false]}, {:igniter, "~> 0.6", [hex: :igniter, repo: "hexpm", optional: true]}, {:nx, "~> 0.10", [hex: :nx, repo: "hexpm", optional: false]}, {:spark, "~> 2.3", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}], "hexpm", "c6a508692dd38b39d0e1b55dad75b02a03e21027716b89d9361809f032a1c37d"},
44
"bb_ik_dls": {:hex, :bb_ik_dls, "0.3.1", "59430296b39ca38a6ab81d66a73ba9911b4820332bc80c477d7b01d9df203497", [:mix], [{:bb, "~> 0.12", [hex: :bb, repo: "hexpm", optional: false]}], "hexpm", "54f530aa77004a7151670f76eaa75ed731cce8ec2c07fc412ed089ee2f5e63ed"},
55
"bb_liveview": {:hex, :bb_liveview, "0.2.2", "4ed776413147eeb9ba8682278ada4d0eb615193526255639898189964738735c", [:mix], [{:bb, "~> 0.13", [hex: :bb, repo: "hexpm", optional: false]}, {:esbuild, "~> 0.8", [hex: :esbuild, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.16", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ed88ee858643b70d59d548a84b48a737430b0b65a3937725ac87996eb1df8741"},
66
"bb_reactor": {:hex, :bb_reactor, "0.2.0", "cccd2a8c7def4f0ce47f5eecc46fa62efc61dc063c6a9ae55b5d78401c608018", [:mix], [{:bb, "~> 0.13", [hex: :bb, repo: "hexpm", optional: false]}, {:reactor, "~> 0.17", [hex: :reactor, repo: "hexpm", optional: false]}, {:spark, "~> 2.3", [hex: :spark, repo: "hexpm", optional: false]}], "hexpm", "e9343a033ad6a96f866e230cf1a5136947a480534bf828d5261273c95b175398"},
@@ -20,7 +20,7 @@
2020
"ex_cldr_currencies": {:hex, :ex_cldr_currencies, "2.16.5", "9b8065605bf0c77b6b07b8fd05d26f34f848b8f5ead2343837f0f4bbf3ac2f10", [:mix], [{:ex_cldr, "~> 2.38", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "4397179028f0a7389de278afd0239771f39ba8d1984ce072bc9b715fa28f30d3"},
2121
"ex_cldr_lists": {:hex, :ex_cldr_lists, "2.11.1", "ad18f861d7c5ca82aac6d173469c6a2339645c96790172ab0aa255b64fb7303b", [:mix], [{:ex_cldr_numbers, "~> 2.25", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "00161c04510ccb3f18b19a6b8562e50c21f1e9c15b8ff4c934bea5aad0b4ade2"},
2222
"ex_cldr_numbers": {:hex, :ex_cldr_numbers, "2.37.0", "701922f371d5569f4aef4dd81958231fc15dd9976564251871977f21215f4bc7", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:digital_token, "~> 0.3 or ~> 1.0", [hex: :digital_token, repo: "hexpm", optional: false]}, {:ex_cldr, "~> 2.44", [hex: :ex_cldr, repo: "hexpm", optional: false]}, {:ex_cldr_currencies, "~> 2.16", [hex: :ex_cldr_currencies, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "adc011aad34ab545e1d53ae248891479efcd25ba51f662822ec7c5083d0122f8"},
23-
"ex_cldr_units": {:hex, :ex_cldr_units, "3.20.0", "7ade6ae1017a8f650f83f79a378ad9ad5bcc4eacfa2704349590c1f91f2eac19", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ex_cldr_lists, "~> 2.10", [hex: :ex_cldr_lists, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.36", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "eb93f99005f8d3f1b1b12c85a45323937350e11d3e79f8375ab51e2ff44392f2"},
23+
"ex_cldr_units": {:hex, :ex_cldr_units, "3.20.1", "b27ec81814a67ed77d1c06c64ef74519b141497b74244ec18e1a1a2f78f8e313", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ex_cldr_lists, "~> 2.10", [hex: :ex_cldr_lists, repo: "hexpm", optional: false]}, {:ex_cldr_numbers, "~> 2.36", [hex: :ex_cldr_numbers, repo: "hexpm", optional: false]}, {:ex_doc, "~> 0.18", [hex: :ex_doc, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "879af22563b06570f16c28bed3decaadc0c1233906f4516b2d5d28e2bbbadee0"},
2424
"expo": {:hex, :expo, "1.1.1", "4202e1d2ca6e2b3b63e02f69cfe0a404f77702b041d02b58597c00992b601db5", [:mix], [], "hexpm", "5fb308b9cb359ae200b7e23d37c76978673aa1b06e2b3075d814ce12c5811640"},
2525
"feetech": {:hex, :feetech, "0.2.0", "e32504b0d97ac860b3a01d3ca7b0e70cbac01cd88cf24a8fffc77e4a95a990df", [:mix], [{:circuits_uart, "~> 1.5", [hex: :circuits_uart, repo: "hexpm", optional: false]}], "hexpm", "3b4fe5322b57017c8568a6e19e10f0900784b99c8c7c9cea5dff27948a91d8c0"},
2626
"file_system": {:hex, :file_system, "1.1.1", "31864f4685b0148f25bd3fbef2b1228457c0c89024ad67f7a81a3ffbc0bbad3a", [:mix], [], "hexpm", "7a15ff97dfe526aeefb090a7a9d3d03aa907e100e262a0f8f7746b78f8f87a5d"},
@@ -54,9 +54,9 @@
5454
"req": {:hex, :req, "0.5.17", "0096ddd5b0ed6f576a03dde4b158a0c727215b15d2795e59e0916c6971066ede", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "0b8bc6ffdfebbc07968e59d3ff96d52f2202d0536f10fef4dc11dc02a2a43e39"},
5555
"rewrite": {:hex, :rewrite, "1.2.0", "80220eb14010e175b67c939397e1a8cdaa2c32db6e2e0a9d5e23e45c0414ce21", [:mix], [{:glob_ex, "~> 0.1", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.0", [hex: :sourceror, repo: "hexpm", optional: false]}, {:text_diff, "~> 0.1", [hex: :text_diff, repo: "hexpm", optional: false]}], "hexpm", "a1cd702bbb9d51613ab21091f04a386d750fc6f4516b81900df082d78b2d8c50"},
5656
"sourceror": {:hex, :sourceror, "1.10.0", "38397dedbbc286966ec48c7af13e228b171332be1ad731974438c77791945ce9", [:mix], [], "hexpm", "29dbdfc92e04569c9d8e6efdc422fc1d815f4bd0055dc7c51b8800fb75c4b3f1"},
57-
"spark": {:hex, :spark, "2.3.14", "a08420d08e6e0e49d740aed3e160f1cb894ba8f6b3f5e6c63253e9df1995265c", [:mix], [{:igniter, ">= 0.3.64 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:sourceror, "~> 1.2", [hex: :sourceror, repo: "hexpm", optional: true]}], "hexpm", "af50c4ea5dd67eba822247f1c98e1d4e598cb7f6c28ccf5d002f0e0718096f4f"},
57+
"spark": {:hex, :spark, "2.4.0", "f93d3ae6b5f3004e956d52f359fa40670366685447631bc7c058f4fbf250ebf3", [:mix], [{:igniter, ">= 0.3.64 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: true]}, {:sourceror, "~> 1.2", [hex: :sourceror, repo: "hexpm", optional: true]}], "hexpm", "4e5185f5737cd987bb9ef377ae3462a55b8312f5007c2bc4ad6e850d14ac0111"},
5858
"spitfire": {:hex, :spitfire, "0.2.1", "29e154873f05444669c7453d3d931820822cbca5170e88f0f8faa1de74a79b47", [:mix], [], "hexpm", "6eeed75054a38341b2e1814d41bb0a250564092358de2669fdb57ff88141d91b"},
59-
"splode": {:hex, :splode, "0.2.10", "f755ebc8e5dc1556869c0513cf5f3450be602a41e01196249306483c4badbec0", [:mix], [], "hexpm", "906b6dc17b7ebc9b9fd9a31360bf0bd691d20e934fb28795c0ddb0c19d3198f1"},
59+
"splode": {:hex, :splode, "0.3.0", "ff8effecc509a51245df2f864ec78d849248647c37a75886033e3b1a53ca9470", [:mix], [], "hexpm", "73cfd0892d7316d6f2c93e6e8784bd6e137b2aa38443de52fd0a25171d106d81"},
6060
"tailwind": {:hex, :tailwind, "0.4.1", "e7bcc222fe96a1e55f948e76d13dd84a1a7653fb051d2a167135db3b4b08d3e9", [:mix], [], "hexpm", "6249d4f9819052911120dbdbe9e532e6bd64ea23476056adb7f730aa25c220d1"},
6161
"telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"},
6262
"telemetry_metrics": {:hex, :telemetry_metrics, "1.1.0", "5bd5f3b5637e0abea0426b947e3ce5dd304f8b3bc6617039e2b5a008adc02f8f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "e7b79e8ddfde70adb6db8a6623d1778ec66401f366e9a8f5dd0955c56bc8ce67"},

0 commit comments

Comments
 (0)